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可別找我啊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM