[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=后面的数字:
'))
33 begin_page = int(raw_input(u'请输入开始的页数:
'))
34 end_page = int(raw_input(u'请输入终点的页数:
'))
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,特点显而易见了。

原文地址:https://www.cnblogs.com/summer2012/p/3176780.html