欧盟将与美国进行贸易谈判,法国表示反对
在我们日常使用搜索引擎的时候,大多数搜索引擎都会为了让用户更快速的输入自己想要的相关问题,而基于已输入的字符智能匹配出许多相关的关键字推荐给用户。
当用户输入一个字符,碰到提示的候选词很多的时候,如何取舍,哪些展示在前面,哪些展示在后面?
这就是一个搜索热度的问题。
用户在使搜索框搜索相关问题时,会输入大量的关键字,每一次输入就是对关键字的一次投票。那么关键字被输入的次数越多,它对应的查询就比较热门,所以需要把查询的关键字记录下来,并且统计出每个关键字的频率,方便提示结果按照频率排序。
而在亚马逊中的搜索也是如此。如下图,在输入一个”A”后会自动联想出“amazon gift cards”、“airpods”、“aa batteries”等词。
那么如何批量的根据自己设置的关键词去采集亚马逊推荐的热搜词呢?
So Easy!
用Python只需4步即可实现!
1、打开浏览器访问亚马逊,在亚马逊主页按下“F12”,并切换到“Network”。
2、在搜索框中输入任意字符,并抓包分析数据。
这时候我们会看到控制台中出现了“suggestions?.....”的请求。点击并切换到Response选项卡中,可以清楚的看到亚马逊返回的数据。我们将数据拷贝(Ctrl+A在Ctrl+C)出来,美化一下仔细看看到底返回了些什么。访问:www.json.cn将数据拷贝进去,一探究竟。
在返回的数据是一个标准的json数据,在数据中”Value”这个键下对应的值就是亚马逊的热搜关键字!
如此一来我们只需要带上关键字模拟请求这个接口,即可拿到亚马逊返回的热搜关键字。是不是So Easy?!
3、复制Curl,生成代码。
还是用懒人方法给大家演示,首先在“suggestions?.....”的请求上鼠标右键选择Copy→Copy as cURL。
然后访问https://curl.trillworks.com/,将复制的cURL填进去即可自动生成Python代码。再将生成的代码复制出来,在PyCharm中复制进去。
4、修改代码,实现复用。
在测试当中,我将一些不必要的参数删除最终只需三个参数、几行代码即可实现。
import requests
keyword = str(input('请输入关键字:'))
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Referer': 'https://www.amazon.com/',
'Origin': 'https://www.amazon.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36',}
params = (
('mid', 'ATVPDKIKX0DER'),
('alias', 'aps'),
('prefix',keyword),)
response = requests.get('https://completion.amazon.com/api/2017/suggestions', headers=headers, params=params)
suggestions = response.json()['suggestions']
for i in suggestions:
value = i['value']
print(value)
当然这几行代码只能实现单个关键词热搜词的采集,我们可以将关键字批量的写入然后挨个的请求即可实现批量采集的目的。
在这里技术小哥哥已经将这个功能封装为一个小工具,只需将关键字写入到表格当中即可批量采集!