网络请求分析实战篇(01)—— 爬取amazon搜索栏的关联关键词

1. 需求介绍

  • 在amazon搜索商品,当输入部分单词时,下面会自动弹出一些关联关键词。这些关键词是amazon内部总结,统计的热门搜索关键词。我们现在的需求就是,给出一些关键词,然后把对应的关联关键词抓出来。

2. 环境

  • 系统:win7
  • python 3.6.1
  • requests 2.14.2 (通过pip list查看)

3. 分析请求

  • 第一步:进入amazon主页,将网页源代码保存下来,以备后面分析参数来源。这儿需要注意到一个问题就是,这儿说的网页源代码指的是请求下来的原始页面,而不是浏览器渲染后的代码。区别如下:

    • 抓下来的网页源代码
    • 浏览器渲染后的代码
  • 第二步:在输入“ car ”时,抓取到的网络请求如下:

# General
Request URL:https://completion.amazon.com/search/complete?method=completion&mkt=1&r=GFPC5GA3RHYHZK8YKY93&s=136-4489048-3064812&c=&p=Gateway&l=en_US&b2b=0&fresh=0&sv=desktop&client=amazon-search-ui&x=String&search-alias=aps&ks=82&q=car&qs=&cf=1&fb=1&sc=1&
Request Method:GET
Status Code:200 OK
Remote Address:54.239.17.86:443
Referrer Policy:no-referrer-when-downgrade# Request Headers
Host:completion.amazon.com
Referer:https://www.amazon.com/ref=nav_logo
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36# Query String parameters
method:completion
mkt:1
r:GFPC5GA3RHYHZK8YKY93
s:136-4489048-3064812
c:
p:Gateway
l:en_US
b2b:0
fresh:0
sv:desktop
client:amazon-search-ui
x:String
search-alias:aps
ks:82
q:car
qs:
cf:1
fb:1
sc:1
  • 从上面的参数中,发现有3个参数是需要我们重点关注的:
r:GFPC5GA3RHYHZK8YKY93
s:136-4489048-3064812
search-alias:aps
  • 第三步:分析这几个参数的来源:

    • 之前我的文章中就提到过,这种参数来源,一般是在以下的4个点:
第一,网页源代码中携带。
第二,藏在服务器返回过来的cookie中。
第三,网页js脚本计算生成。
第四,登录时,请求js脚本生成,或者同步产生的其他网页中。
  • 在这个案例中,发现相对比较简单,这些参数就属于第一种情况,网页源代码中携带。

4. 编写爬虫

  • 从上面的分析过程来看,就知道抓取这个数据很简单,分两步:

    • 第一:抓取amazon主页,从主页源代码中取出必要的参数。
    • 第二:使用这些参数,向目标网页请求关联关键词。

import requests
import reunicornHeader = {'Host': 'www.amazon.com','Referer': 'https://www.amazon.com','user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}if __name__ == "__main__":# 第一步:先把amazon主页拉下来resp = requests.get("https://www.amazon.com/ref=nav_logo", headers=unicornHeader)respText = resp.text# print(f"respText = {respText}")# 第二步:从主页中提取出相关的参数'''method:completionmkt:1r:T9GNBFENMKCSHQ96SN69s:136-4489048-3064812c:p:Gatewayl:en_USb2b:0fresh:0sv:desktopclient:amazon-search-uix:Stringsearch-alias:mobileks:82q:carqs:cf:1fb:1sc:1'''# r:T9GNBFENMKCSHQ96SN69# var ue_id = 'T9GNBFENMKCSHQ96SN69',ue_id_Re = re.search("ue_id = '(.*?)'", respText, re.DOTALL)print(f"ue_id_Re = {ue_id_Re}")if ue_id_Re:ue_id = ue_id_Re.group(1)else:ue_id = ""# s:136-4489048-3064812# ue_sid = '136-4489048-3064812',ue_sid_Re = re.search("ue_sid = '(.*?)'", respText, re.DOTALL)print(f"ue_sid_Re = {ue_sid_Re}")if ue_sid_Re:ue_sid = ue_sid_Re.group(1)else:ue_sid = ""# 第三步:构造请求originalKey = "car"         # 原始关键字# search_alias = 'mobile'# aps                       # All Departments 类别search_alias = 'aps'        # 搜索类别,这个是类别下拉框中的。主页源码中也有ks = 100                    # 先自己指定,发现并不影响结果# https://completion.amazon.com/search/complete?method=completion&mkt=1&r=T9GNBFENMKCSHQ96SN69&s=136-4489048-3064812&c=&p=Gateway&l=en_US&b2b=0&fresh=0&sv=desktop&client=amazon-search-ui&x=String&search-alias=mobile&ks=67&q=c&qs=&cf=1&fb=1&sc=1&keywordsUrl = f"https://completion.amazon.com/search/complete?method=completion&mkt=1&r={ue_id}&s={ue_sid}&c=&p=Gateway&l=en_US&b2b=0&fresh=0&sv=desktop&client=amazon-search-ui&x=String&search-alias={search_alias}&ks={ks}&q={originalKey}&qs=&cf=1&fb=1&sc=1&"secondResp = requests.get(keywordsUrl, headers=unicornHeader)print(f"secondRespText = {secondResp.text}")
  • 结果输出:
# 发现关联关键词已经成功提取了ue_id_Re = <_sre.SRE_Match object; span=(1617, 1647), match="ue_id = '6M0F9KJN25H89JPK5B1R'">
ue_sid_Re = <_sre.SRE_Match object; span=(1732, 1762), match="ue_sid = '144-1591423-1127326'">
secondRespText = completion = ["car",["car phone mount","carbon monoxide detector","car charger","cards against humanity","car accessories","car seat protector","car vacuum","cardigans for women","carry on luggage","car phone holder"],[{"nodes":[{"name":"Cell Phones & Accessories","alias":"mobile"}]},{},{},{},{},{},{},{},{},{}],[],"AA2EWWA46T4I"];String();.

网络请求分析实战篇(01)—— 爬取amazon搜索栏的关联关键词相关推荐

  1. python爬取微信小程序(实战篇)_python爬取猫眼的前100榜单并展示在微信小程序

    首先分析要爬取的网页,对其结构及数据获取方式解析后,可采用正则筛选自己要的数据 猫眼榜单.png import requests from requests.exceptions import Req ...

  2. Python3网络爬虫开发实战,Scrapy 爬取新浪微博

    前面讲解了 Scrapy 中各个模块基本使用方法以及代理池.Cookies 池.接下来我们以一个反爬比较强的网站新浪微博为例,来实现一下 Scrapy 的大规模爬取. 很多人学习python,不知道从 ...

  3. Python爬虫之bs4解析实战篇_爬取星巴克菜单【Python爬虫】

    完整源码: import urllib.request from bs4 import BeautifulSoupdef get_content():url = 'https://www.starbu ...

  4. python学爬虫书籍_Python3实战爬虫之爬取京东图书的图文详解

    最近在学习python3,下面这篇文章主要给大家介绍了关于Python3实战爬虫之爬取京东图书图片的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下 ...

  5. Python爬虫实战一之爬取糗事百科段子

    点我进入原文 另外, 中间遇到两个问题: 1. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 解 ...

  6. python爬取喜马拉雅_Python爬虫实战案例之爬取喜马拉雅音频数据详解

    这篇文章我们来讲一下在网站建设中,Python爬虫实战案例之爬取喜马拉雅音频数据详解.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 前言 喜马拉雅是专业的音频分享平台,汇集 ...

  7. python爬网易新闻_Python爬虫实战教程:爬取网易新闻;爬虫精选 高手技巧

    Python爬虫实战教程:爬取网易新闻:爬虫精选 高手技巧 发布时间:2020-02-21 17:42:43 前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有, ...

  8. 爬虫篇——User-Agent爬取备用及存储

    爬虫篇--User-Agent爬取备用及存储 代码 代码 本文通过抓取常见的User-Agent(用户代理),将其写入列表并保存为json格式文件,且将代码进行了封装,方便以后抓取数据时动态的更新请求 ...

  9. python实战|python爬取58同城租房数据并以Excel文件格式保存到本地

    python实战|python爬取58同城租房数据并以Excel文件格式保存到本地 一.分析目标网站url 目标网站:https://cq.58.com/minsuduanzu/ 让我们看看网站长啥样 ...

  10. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

最新文章

  1. gitlab 推送本地代码到远程仓库
  2. 关于RESTful名字的含义
  3. .Net 基础new关键字的用法
  4. localdatetime 默认时间_为什么建议使用你 LocalDateTime ,而不是 Date?
  5. 数据库对象管理 (表)
  6. 题解: 区间合并(opj 2-4-7620)
  7. 为什么我从Mac切换到Linux
  8. Git笔记(23) 不同角色的贡献
  9. JSHint 代码检查
  10. 38个Pandas实用技巧
  11. 遥感数据共享(一)珠海一号数据
  12. 自定义函数计算某个字符在字段中出现的次数
  13. 黑马程序员——从迷茫的大学认识黑马
  14. c语言识别希腊字母吗,isalpha()
  15. 专题详解-5G接入控制:CAG新特性(3)-end
  16. 炫我科技渲染集群管理软件
  17. PG服务进程(Postgres)——BeginReportingGUCOptions向客户端汇报GUC
  18. Elementui删除表格最后一页全部数据后跳到前一页的骚气写法
  19. 自学编程推荐的11个学习及刷题网站
  20. [Linux]-基础知识及命令学习

热门文章

  1. 硬盘分区无法打开,提示“文件或目录损坏且无法读取”
  2. 怎么把计算机管理的磁盘找出来,电脑分区显示不出来怎么办
  3. Failed to initialize NVML 长效解决方法
  4. 金山词霸2009牛津版(Sp1破解补丁)
  5. 基于JSP的鲜花店商城平台【数据库设计、源码、开题报告】
  6. 基于VC的Ceasar加密和解密技术
  7. 2020网赚模式不再亮眼,中小开发者如何在红海竞争中活下去?
  8. 织梦域名后缀.html,织梦cms建站教程之首页域名后缀index.html去除的方法
  9. 常见web中间件及其漏洞概述
  10. java 实现 excel normsdist_Excel实现的NORM NORMDIST函数中的幻数