Python百度下拉框关键词采集
对于词的研究,想必每个seoer都知道,而除了比较热门的百度相关搜索词之外,百度下拉框关键词应该也是不少人研究的范围,不过大部分人都是针对下拉框词的刷量,毕竟百度下拉框关键词采集已经泛滥成灾了。
百度下拉的官方正式叫法是百度推荐词(Baidu Suggest Word),民间又称之为百度联想词或百度下拉菜单。它是百度为了方便广大网民搜索,提高输入效率而推出的一项服务。
举例,当我们在百度输入“营销”这两个字的时候,百度就从推荐词条库中检索出以“营销”这两个字打头的词条,并根据搜索量从大到小排序,组建成下拉菜单。百度下拉菜单的最大数量为10条。
百度下拉框关键词的意义:
可以作为长尾词使用,作为标题使用,毕竟是用户搜索时候可以触发关键词搜索选择。
不少人将下拉词直接进行引流,比如曝光品牌,引导到指定的页面,你可以进行搜集分析竞争对手的相关操作,或者自己去曝光自己的品牌,见仁见智吧!
网络上留存有不少下拉词的采集工具和源码,这里,本渣渣早就已经整理过了,这里再次分享一下吧,昨晚有老哥问起,其实来来去去都是这些东西,没啥特别的吧!
版本一:
直接网页抓包实现下拉词的采集
| def get_keywords(word):
url=f"https://www.baidu.com/sugrec?pre=1&ie=utf-8&json=1&prod=pc&wd={word}"
html=requests.get(url)
html=html.json()
#print(html)
#print(html['g'])
key_words=[]
for key_word in html['g']:
print(key_word['q'])
key_words.append(key_word['q'])
#print(key_words)
return key_words
|
版本二:
使用官方接口
比如:
https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=seo&sugmode=2&json=1&p=3&sid=1427_21091_21673_22581&req=2
| def get_sug(word):
url = 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=%s&sugmode=2&json=1&p=3&sid=1427_21091_21673_22581&req=2&pbs=%%E5%%BF%%AB%%E6%%89%%8B&csor=2&pwd=%%E5%%BF%%AB%%E6%%89%%8B&cb=jQuery11020924966752020363_1498055470768&_=1498055470781' % word
r = requests.get(url, verify=False) # 请求API接口,取消了HTTPS验证
cont = r.content # 获取返回的内容
res = cont[41: -2].decode('gbk') # 只取返回结果中json格式一段,并且解码为unicode
res_json = json.loads(res) # json格式转换
return res_json['s'] # 返回关键词列表
|
版本三:
另一个接口地址
| def get_word(word):
url=f'http://suggestion.baidu.com/su?wd={word}&sugmode=3&json=1'
html=requests.get(url).text
html=html.replace("window.baidu.sug(",'')
html = html.replace(")", '')
html = html.replace(";", '')
#print(html)
html = json.loads(html)
key_words=html['s']
#print(key_words)
return key_words
|
本质上二和三都是同一个性质,大家参照着看和用吧!
扩展版本:
这里有个小技巧,就是在关键词后面输入w,会出现跟拼音以w开头的一系列关键词,比如“黄山w”,会出现“黄山温泉”,”黄山玩几天“,“黄山五绝”等关键词(见上截图)。因此,当我们把a~z遍历一遍,会出现更多关键词。
| def get_more_word(word):
more_word=[]
for i in 'abcdefghijklmnopqrstuvwxyz':
more_word.extend(get_keywords('%s%s'%(word,i)))
print(more_word)
print(len(more_word))
print(len(list(set(more_word))))
return list(set(more_word)) #去重操作
def get_more_sug(word):
all_words = []
for i in 'abcdefghijklmnopqrstuvwxyz':
all_words += get_sug(word+i) # 遍历字母表 | 利用了上一个函数
print(len(list(set(all_words))))
return list(set(all_words)) # 去重操作
|
这里选用版本二的接口形式,避免被和谐
但是使用requests模块请求一个证书无效的网站的话会直接报错
可以设置verify参数为False解决这个问题
| r = requests.get(url, verify=False)
|
但是设置verify=False会抛出一个InsecureRequestWarning的警告
这样看起来很不好
解决方法:
| from requests.packages.urllib3.exceptions import InsecureRequestWarning
|
| # 禁用安全请求警告
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
|
参考资料:百度
百度下拉-百度百科
https://baike.baidu.com/item/%E7%99%BE%E5%BA%A6%E4%B8%8B%E6%8B%89/7139864?fr=aladdin
张亚楠博客-seo技术流
PYTHON批量挖掘百度下拉框关键词
http://www.zhidaow.com/post/get-baidu-suggestions-by-python
Sch01aR#-博客园
Python-requests取消SSL验证的警告InsecureRequestWarning解决办法
https://www.cnblogs.com/sch01ar/p/8432811.html
凡本网注明"来源:XXX "的文/图/视频等稿件,本网转载出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如涉及作品内容、版权和其它问题,请与本网联系,我们将在第一时间删除内容!
作者:
来源: https://cloud.tencent.com/developer/article/1677913