学习内容来自百度贴吧的某培训机构一个名叫黄哥的视频,视频内容讲的是360搜索,经测试国内其他搜索引擎大都适用,
但在谷歌上试的时候发现不容易解析,问题出在URL格式中cp=后面代表的字符串长度还好想,但是gs_id后面就会变了,
比如这么个解析出来的json网址,https://www.google.com.hk/complete/search?client=hp&hl=zh-CN&gs_rn=39&gs_ri=hp&tok=LdwfQgWKHs1U3CunHQbV0A&cp=7&gs_id=5xe&q=sublime&xhr=t,红色部分就是发生变化的,黄色部分是检索词,在群里问过才知道,那些&符号后头都是参数,把这俩变化的参数部分删掉,就可以解析了
言归正传,获取百度联想词的代码如下:
运行结果如下:
['百度翻译', '百度网盘', '百度云', '百度杀毒', '百度卫士', '百度云盘登录', '百度网盘搜索', '百度糯米', '百度影音', '百度影音浏览器']
['清明节放假安排 2014', '清明时节雨纷纷', '清明果', '清明果艾糍', '清明诗会', '清明馃', '清明粑', '清明艾饺', '清明暗月', '清明饼']
['锄禾日当午', '锄禾日当午全诗', '锄禾日当午搞笑', '锄禾日当午 诗名', '锄禾日当午 清明上河图', '锄禾日当午作者', '锄禾日当午 汗滴禾下土', '锄禾日了几个人', '锄禾 古诗', '锄禾日当午 造血干细胞']
['期待恋爱', '期待 girls day', '期待爱', '期待在地下城邂逅有错吗', '期待度', '期待的英文', '期待爱情', '期待舞蹈教学', '期待你的回复 英文', '期待爱歌词']
['钓鱼岛屿最新事件', '钓鱼岛屿最新事件中国军方态度', '钓鱼岛屿最新事件开火', '钓鱼岛屿', '钓鱼岛屿事件中国败', '钓鱼岛屿事件', '钓鱼岛屿最新事件中国态度视频', '钓鱼岛上有什么', '钓鱼岛歌', '钓鱼岛屿最新事件新闻']
['django book', 'django 教程', 'django 安装', 'django cms', 'django 模板', 'django mysql', 'django admin', 'django 下载', 'django ajax', 'django session']
[Finished in 19.9s]
但在谷歌上试的时候发现不容易解析,问题出在URL格式中cp=后面代表的字符串长度还好想,但是gs_id后面就会变了,
比如这么个解析出来的json网址,https://www.google.com.hk/complete/search?client=hp&hl=zh-CN&gs_rn=39&gs_ri=hp&tok=LdwfQgWKHs1U3CunHQbV0A&cp=7&gs_id=5xe&q=sublime&xhr=t,红色部分就是发生变化的,黄色部分是检索词,在群里问过才知道,那些&符号后头都是参数,把这俩变化的参数部分删掉,就可以解析了
言归正传,获取百度联想词的代码如下:
# codeing=utf-8
import urllib.request
import re
#import random
# iplist=['5.98.86.141:8080','24.172.34.114:8181','27.145.145.105:8080']
list1 = ['百度', '清明', '锄禾', '期待', '钓鱼岛', 'django']
for i in list1:
# ip=random.choice(iplist)
gjc = urllib.request.quote(i)
url = 'http://suggestion.baidu.com/su?wd=' + gjc + \
'&json=1&p=3&sid=&cb=jQuery110205425511478908079_1396251136074&_=1396251136078'
headers1 = {'GET': url,
'Host': "suggestion.baidu.com",
'User-Agent': "Mozilla/5.0 (Windows NT 6.2; rv:28.0) Gecko/20100101 Firefox/28.0",
'Referer': "http://www.baidu.com/"}
# proxy_support=urllib.request.ProxyHandler({'http':'http://'+ip})
# opener=urllib.request.build_opener(proxy_support)
# urllib.request.install_opener(opener)
req = urllib.request.Request(url, headers=headers1)
html = urllib.request.urlopen(req).read().decode('gbk')
ss = re.findall('\[.*\]', html)
print(ss[0].strip('[').strip(']').replace('"', '').split(','))
有些部分被注释掉是因为没什么必要模拟浏览器和挂代理,但是视频里讲到了所以也加入进去了
运行结果如下:
['百度翻译', '百度网盘', '百度云', '百度杀毒', '百度卫士', '百度云盘登录', '百度网盘搜索', '百度糯米', '百度影音', '百度影音浏览器']
['清明节放假安排 2014', '清明时节雨纷纷', '清明果', '清明果艾糍', '清明诗会', '清明馃', '清明粑', '清明艾饺', '清明暗月', '清明饼']
['锄禾日当午', '锄禾日当午全诗', '锄禾日当午搞笑', '锄禾日当午 诗名', '锄禾日当午 清明上河图', '锄禾日当午作者', '锄禾日当午 汗滴禾下土', '锄禾日了几个人', '锄禾 古诗', '锄禾日当午 造血干细胞']
['期待恋爱', '期待 girls day', '期待爱', '期待在地下城邂逅有错吗', '期待度', '期待的英文', '期待爱情', '期待舞蹈教学', '期待你的回复 英文', '期待爱歌词']
['钓鱼岛屿最新事件', '钓鱼岛屿最新事件中国军方态度', '钓鱼岛屿最新事件开火', '钓鱼岛屿', '钓鱼岛屿事件中国败', '钓鱼岛屿事件', '钓鱼岛屿最新事件中国态度视频', '钓鱼岛上有什么', '钓鱼岛歌', '钓鱼岛屿最新事件新闻']
['django book', 'django 教程', 'django 安装', 'django cms', 'django 模板', 'django mysql', 'django admin', 'django 下载', 'django ajax', 'django session']
[Finished in 19.9s]