zoukankan      html  css  js  c++  java
  • python爬虫_入门_翻页

    写出来的爬虫,肯定不能只在一个页面爬,只要要爬几个页面,甚至一个网站,这时候就需要用到翻页了

    其实翻页很简单,还是这个页面http://bbs.fengniao.com/forum/10384633.html,话说我得给这个人增加了多大的访问量啊......

    10384633重点关注下这个数字,这个就是页面的名称,现在尝试把这个数字+/-1看看有没有结果

    验证http://bbs.fengniao.com/forum/10384634.html

    可以看到,这个页面是可以访问的

    再试试http://bbs.fengniao.com/forum/10384632.html,这次不截图了,可以自己去试试,也是可以访问的

    那么接下来就好办了,只要把这个数字每次+1或-1就可以了,甚至可以从http://bbs.fengniao.com/forum/1.html开始尝试连接,一直+1,直到502或404断开

    下面上代码,还是用之前的内容,这次加了个页面处理的函数

    #!/usr/bin/python
    # coding: UTF-8
    
    import urllib
    import urllib2
    import re
    
    #处理地址,并获取页面全部的图片地址
    def get_image_url(url):
      #url_format = urllib2.Request(url) #1
      url_open = urllib.urlopen(url) #2
      url_read = url_open.read() #3
      re_value = re.compile('(?<=src=").*?.jpg')
      image_url_list = re.findall(re_value,url_read) #4
      return image_url_list
    
    #这个函数专门用来下载,前面两行是将图片连接中/前面的内容全部删除,留下后面的文件名用来保存文件的,try不说了,不清楚请翻回去看容错
    def down_image(image_url):
      rev = '^.*/'
      file_name = re.sub(rev,'',image_url)
      try:
        urllib.urlretrieve(image_url,file_name)
      except:
        print 'download %s fail' %image_url
      else:
        print 'download %s successed' %image_url
    
    #这个函数用来处理页面,每次+1
    def get_page(url):
      url_num = re.search('(?<=/)[0-9]+(?=.)',url)
      url_num = url_num.group()
      url_num_1 = int(url_num) + 1
      url = url.replace(url_num,str(url_num_1))
      return url
    
    if __name__ == '__main__':
      url = 'http://bbs.fengniao.com/forum/10384633.html'
      for n in range(1,10):
        url = get_page(url)
        image_url_list = get_image_url(url)
        for image_url in image_url_list:
          down_image(image_url) #5

    其实可以给get_page传两个参数,一个是URL另一个是递增的数值,就变成了get_page(url,n),但是我没有这么写,可以思考下为什么,如果把for n in range(1,10)改成while True会怎样?嘿嘿......回头人家封你IP可别找我啊

  • 相关阅读:
    5 Python3 函数进阶&迭代器与生成器
    2 python第三章文件操作
    4 python内置函数
    python内置函数 eval()、exec()以及complie()函数
    0 字符与字节的区别
    python enumerate() 函数
    1 python 文件处理
    python 之编写登陆接口
    python 之九九乘法表
    第一模块第二章-数据类型整理
  • 原文地址:https://www.cnblogs.com/xiu123/p/9094956.html
Copyright © 2011-2022 走看看