Python抓取搜索引擎联想词

   众所周知Python可以用来写爬虫抓取数据。而这个例子是我学习写的第一个简单的爬虫--抓取360搜索引擎搜索时的联想词集合。我们在使用搜索引擎搜索东西时,当我们输入一个词之后搜索框下方会出现一系列联想词如图所示。


  我们想利用Python代码把这些联想词抓取出来,首先我们在火狐浏览器中,查看该页面的原始html文档,在搜索引擎中输入要查询的关键词如:NBA,我们可以看到Request URL中有一个我们要请求的url:https://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word,obdata&word=NBA。如图所示:



    我们将这个URL输入到地址栏中网页返回了联想词的集合如图所示:


    因此我们可以利用这个URL,通过替换地址最后“word=”后面的关键词来进行联想词的抓取工作。根据这个思路我们可以来实现我们的Python代码。


#coding utf-8
import urllib2
import urllib
import re
import time
from random import choice
#代理ip地址list
iplist=['1.9.189.65:3128','27.24.158.130.80','27.24.158.154:80']
#要抓取的搜索关键字list
keywords=["NBA","CBA"]
for item in keywords:
	#随机选择代理ip地址
	ip=choice(iplist)
	word=urllib.quote(item)
	url="https://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-

8&format=json&fields=word,obdata&word="+word
	headers={
			"GET":url,
			"Host":"sug.so.360.cn",
			"Referer":"https://www.so.com/",
			"User_Agent":" Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:37.0) 

Gecko/20100101 Firefox/37.0"
		}
	#使用随机代理ip地址访问URL
	proxy_support=urllib2.ProxyHandler({'http':'http://'+ip})
	opener=urllib2.build_opener(proxy_support)
	urllib2.install_opener(opener)
	req=urllib2.Request(url)
	for key in headers:
		req.add_header(key,headers[key])
	html=urllib2.urlopen(req).read()
	#提取返回数据
	result=re.findall("\"(.*?)\"",html)
	#去掉集合中的一些无用数据
	r=('query','word','version','result','3.2.1','rec')
	for item in result:
		if item not in r:
			print item
	#抓取一次后休息3秒
	time.sleep(3)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章