爬取百度贴吧
#coding=utf-8
import urllib2
import urllib
def loadPage(url, filename):
'''
作用:根据url发送请求, 获取服务器响应文件
url:需要爬取的url地址
filename:处理文件名
'''
head = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
print '正在下载' + filename
request = urllib2.Request(url, headers=head)
return urllib2.urlopen(request).read()
def writePage(html, filename):
'''
作用:将html文件内容写入文件
html:服务器响应文件
filename:文件名
'''
print '正在保存' + filename
with open(filename, 'w') as f:
f.write(html)
print '_' * 50
def tiebaSpider(url, beginPage, endinPage):
'''
作用:贴吧爬虫调度器,负责组合处理每个页面的url
url:贴吧url的前半部分
beginPage:起始页
endinPage:结束页
'''
for page in range(beginPage, endinPage + 1):
filename = '第' + str(page) + '页'
pn = (page - 1) * 50
fullurl = url + '&pn=' + str(pn)
# print fullurl
html = loadPage(fullurl, filename)
writePage(html, filename)
print '谢谢使用'
if __name__ == '__main__':
kw = raw_input('请输入需要爬取的贴吧名:\n')
beginPage = int(raw_input('请输入起始页'))
endinPage = int(raw_input('请输入结束页'))
url = 'http://tieba.baidu.com/f?'
key = urllib.urlencode({'kw': kw})
fullurl = url + key
tiebaSpider(fullurl, beginPage, endinPage)
-----------------------results of enforcement-----------------------------------------
请输入需要爬取的贴吧名:
python
请输入起始页1
请输入结束页3
正在下载第1页
正在保存第1页
__________________________________________________
正在下载第2页
正在保存第2页
__________________________________________________
正在下载第3页
正在保存第3页
__________________________________________________
谢谢使用
----------------------------------------------------------------------------------------------
出现
*第一页
*第二页
*第三页
则成功