1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 import urllib 5 import urllib2 6 7 def loadPage(url, filename): 8 """ 9 作用:根据url发送请求,获取服务器响应文件 10 url: 需要爬取的url地址 11 filename : 处理的文件名 12 """ 13 print("正在下载 " + filename) 14 headers = {"User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"} 15 16 request = urllib2.Request(url, headers = headers) 17 return urllib2.urlopen(request).read() 18 19 def writePage(html, filename): 20 """ 21 作用:将html内容写入到本地 22 html:服务器相应文件内容 23 """ 24 print "正在保存 " + filename 25 # 文件写入 26 filename = urllib.unquote(filename) 27 print filename 28 with open(filename, 'w') as f: 29 f.write(html) 30 print "-" * 30 31 32 def tiebaSpider(url, beginPage, endPage): 33 """ 34 作用:贴吧爬虫调度器,负责组合处理每个页面的url 35 url : 贴吧url的前部分 36 beginPage : 起始页 37 endPage : 结束页 38 """ 39 for page in range(beginPage, endPage + 1): 40 pn = (page - 1) * 50 41 filename = str(page) + ".html" 42 fullurl = url + "&pn=" + str(pn) 43 #print fullurl 44 html = loadPage(fullurl, filename) 45 #print html 46 writePage(html, filename)#这里调用的时候filename千万不要是中文,不然会报错,可以是英文和数字,这里我使用的是数字。这里也是我学习写完程序以后,跑起来时,这句话总是报错的原因。 47 print "谢谢使用" 48 49 if __name__ == "__main__": 50 kw = raw_input("请输入需要爬取的贴吧名:") 51 beginPage = int(raw_input("请输入起始页:")) 52 endPage = int(raw_input("请输入结束页:")) 53 54 url = "http://tieba.baidu.com/f?" 55 key = urllib.urlencode({"kw": kw}) 56 fullurl = url + key 57 tiebaSpider(fullurl, beginPage, endPage)