python利用urllib和urllib2抓取百度贴吧的页面程序并下载下来在本地

 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)

猜你喜欢

转载自www.cnblogs.com/andingding-blog/p/9108245.html