Python实现抓取百度搜索结果页的网站标题信息
比如,你想采集标题中包含“58同城”的serp结果,并过滤包含有“北京”或“厦门”等结果数据。
该python脚本主要是实现以上功能。
其中,使用beautifulsoup来解析html,可以参考我的另外一篇文章:windows8下安装beautifulsoup
代码如下:
__author__ = '曾是土木人'
# -*- coding: utf-8 -*-
#采集serp搜索结果标题
import urllib2
from bs4 import beautifulsoup
import time
#写文件
def writefile(filename,content):
try:
fp = file(filename,"a+")
fp.write(content + "\r")
fp.close()
except:
pass
#获取html源码
def gethtml(url):
try:
req = urllib2.request(url)
response= urllib2.urlopen(req,none,3)#设置超时时间
data = response.read().decode('utf-8','ignore')
except:pass
return data
#提取搜索结果serp的标题
def fetchtitle(html):
try:
soup = beautifulsoup(''.join(html))
for i in soup.findall("h3"):
title = i.text.encode("utf-8")
if any(str_ in title for str_ in ("北京","厦门")):
continue
else:
print title
writefile("result.txt",title)
except:
pass
keyword = "58同城"
if __name__ == "__main__":
global keyword
start = time.time()
for i in range(0,8):
url = "http://www.baidu.com/s?wd=intitle:"+keyword+"&rn=100&pn="+str(i*100)
html = gethtml(url)
fetchtitle(html)
time.sleep(1)
c = time.time() - start
print('程序运行耗时:%0.2f 秒'%(c))
上一篇: PHP准确取得服务器IP地址的方法
下一篇: Python实现的多线程端口扫描工具分享