最新2017年版利用Python3系列基礎知識完成爬蟲指令碼帶完整註釋
阿新 • • 發佈:2018-12-31
引言
爬蟲已經有很多了,我在網上找了很多,但是都不能執行,於是敲了一份新鮮的,拿出來分享,應該可以直接執行,執行前請檢視python版本。
文章最後更新時間:2017年4月2日 22:13:45
簡介
程式設計IDE:Pycharm 2016.1.2
開發環境:Python 3.6.1
作業系統:Window 7
賞析
原始碼
程式碼註釋已經無比清晰,就不再過多贅述了。# -*- coding:utf-8 -*- # # 爬蟲系列 - http://jandan.net/ooxx/ # 作者:陳魯勇 # 郵箱:[email protected] # 撰寫時間:2017年4月2日 22:06:54 # Python版本:3.6.1 # CSDN:http://blog.csdn.net/csnd_ayo # import urllib.request import os import time # 開啟URL,返回HTML資訊 def open_url(url): # 根據當前URL建立請求包 req = urllib.request.Request(url) # 新增頭資訊,偽裝成瀏覽器訪問 req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36') # 發起請求 response = urllib.request.urlopen(req) # 返回請求到的HTML資訊 return response.read() # 查詢URL中的下一頁頁碼 def get_page(url): # 請求網頁,並解碼 html=open_url(url).decode('utf-8') # 在html頁面中找頁碼 a=html.find('current-comment-page')+23 b=html.find(']',a) # 返回頁碼 return html[a:b] # 查詢當前頁面所有圖片的URL def find_imgs(url): # 請求網頁 html=open_url(url).decode('utf-8') img_addrs=[] # 找圖片 a = html.find('img src=') #不帶停,如果沒找到則退出迴圈 while a != -1: # 以a的位置為起點,找以jpg結尾的圖片 b = html.find('.jpg',a, a+255) # 如果找到就新增到圖片列表中 if b != -1: img_addrs.append(html[a+9:b+4]) # 否則偏移下標 else: b=a+9 # 繼續找 a=html.find('img src=',b) return img_addrs # 儲存圖片 def save_imgs(img_addrs): for each in img_addrs: print('download image:%s'%each) filename=each.split('/')[-1] with open(filename,'wb') as f: img=open_url("http:"+each) f.write(img) # 下載圖片 # folder 資料夾字首名 # pages 爬多少頁的資源,預設只爬10頁 def download_mm(folder='woman',pages=10): folder+= str(time.time()) # 建立資料夾 os.mkdir(folder) # 將指令碼的工作環境移動到建立的資料夾下 os.chdir(folder) # 本次指令碼要爬的網站 url='http://jandan.net/ooxx/' # 獲得當前頁面的頁碼 page_num=int(get_page(url)) for i in range(pages): page_num -= i # 建立新的爬蟲頁 page_url=url+'page-'+str(page_num-1)+'#comments' # 爬完當前頁面下所有圖片 img_addrs=find_imgs(page_url) # 將爬到的頁面儲存起來 save_imgs(img_addrs) if __name__ == '__main__': download_mm()