zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    PAT-乙级-1008 数组元素循环右移问题
    PAT-乙级-1007 素数对猜想
    PAT-乙级-1006 换个格式输出整数
    PAT-乙级-1005 继续(3n+1)猜想
    PAT-乙级-1003 我要通过!
    PAT-乙级-1004 成绩排名
    PAT-乙级-1002 写出这个数
    PAT-乙级-1001 害死人不偿命的(3n+1)猜想
    PAT-甲级-1002-A+B for Polynomials
    【windows】共享文件夹设置
  • 原文地址:https://www.cnblogs.com/andingding-blog/p/9108245.html
Copyright © 2011-2022 走看看