[Python] 记录一个简单百度贴吧爬虫程序
其实是转载,原地址是http://blog.csdn.net/wxg694175346/article/details/8927832,周末在看这几篇关于爬虫程序的文章,在此感谢作者!
把这个程序贴过来,就是
1 # -*- coding: utf-8 -*- 2 #--------------------------------------- 3 # 程序:百度贴吧爬虫 4 # 版本:0.1 5 # 作者:why 6 # 日期:2013-05-14 7 # 语言:Python 2.7 8 # 操作:输入带分页的地址,去掉最后面的数字,设置一下起始页数和终点页数。 9 # 功能:下载对应页码内的所有页面并存储为html文件。 10 #--------------------------------------- 11 12 import string, urllib2 13 14 #定义百度函数 15 def baidu_tieba(url,begin_page,end_page): 16 for i in range(begin_page, end_page+1): 17 sName = string.zfill(i,5) + '.html'#自动填充成六位的文件名 18 print '正在下载第' + str(i) + '个网页,并将其存储为' + sName + '......' 19 f = open(sName,'w+') 20 m = urllib2.urlopen(url + str(i)).read() 21 f.write(m) 22 f.close() 23 24 25 #-------- 在这里输入参数 ------------------ 26 27 # 这个是山东大学的百度贴吧中某一个帖子的地址 28 #bdurl = 'http://tieba.baidu.com/p/2296017831?pn=' 29 #iPostBegin = 1 30 #iPostEnd = 10 31 32 bdurl = str(raw_input(u'请输入贴吧的地址,去掉pn=后面的数字:\n')) 33 begin_page = int(raw_input(u'请输入开始的页数:\n')) 34 end_page = int(raw_input(u'请输入终点的页数:\n')) 35 #-------- 在这里输入参数 ------------------ 36 37 38 #调用 39 baidu_tieba(bdurl,begin_page,end_page)
不得不说,这个爬虫程序相当相当初级,通过变换有序的URL里的pn的值,来访问该URL并存储,所以不难读懂,相关知识有string的一个方法zfill,用处在于e.g., (12, 3) --> '012' and (-3, 3) --> '-03',还可见如下:
>>> import string
>>> string.zfill(2, 9)
'000000002'
>>> string.zfill('2', 9)
'000000002'
>>> string.zfill('add', 9)
'000000add'
另外,这个程序略有问题,就是刚才看了下百度贴吧的URL特点,比如天天向上吧的其中一页面网址http://tieba.baidu.com/f?kw=%CC%EC%CC%EC%CF%F2%C9%CF&tp=0&pn=5,然后实际如果点开第二页,网址其实是http://tieba.baidu.com/f?kw=%CC%EC%CC%EC%CF%F2%C9%CF&tp=0&pn=50,第三页网址是http://tieba.baidu.com/f?kw=%CC%EC%CC%EC%CF%F2%C9%CF&tp=0&pn=100,特点显而易见了。