作為一門高級編程語言,它的定位是優雅、明確和簡單。我學用差不多一年時間了python爬取需要登錄的網頁,用得最多的還是各類爬蟲腳本:寫過抓代理本機驗證的腳本,寫過論壇中自動登錄自動發貼的腳本,寫過自動收郵件的腳本,寫過簡單的驗證碼識別的腳本。
這些腳本有一個共性,都是和web相關的,總要用到獲取鏈接的一些方法python爬取需要登錄的網頁,故累積了不少爬蟲抓站的經驗,在此總結一下,那么以后做東西也就不用重復勞動了。
下面分享一個小案例,實現爬取網站里面的圖片,包括源碼及實現思路。
一、還原手工操作
所謂爬取頁面圖片,正常人手動操作可以分為兩步:
1.打開頁面
2.選中圖片下載到指定文件夾
用代碼實現的話可以節省掉每次下載圖片的操作,運行代碼實現批量下載。
二、設計代碼實現
步驟一:導入相關庫操作
#導入包
.#導入包里的方法
re #導入re正則庫
步驟二:定義解析頁面 ()
這個函數實現打開傳入的路徑并將頁面數據讀取出來,實現代碼,包括發送請求,打開頁面,獲取數據。
代碼實現:
def (url):
=..(url)#發送url請求
=..()#打開url網址
data=.read()#讀取頁面數據
data#返回頁面數據
步驟三:定義()函數
其次遍歷數組實現圖片下載操作。
代碼實現:
def (html):
regx=r'[\S]*jpg' #定義正則匹配公式
=pile(regx)#構造匹配模式,速度更快
=re.(,repr(html))#repr()將內容轉化為字符串形式,列表形式展示正則表達式匹配的結果
num=1 #定義變量控制循環
for img in : #定義變量遍歷數組
image=(img)#將圖片路徑傳入加載函數
with open('F:\\photo\\%s.jpg'%num,'wb') as fb: #以只讀方式打開圖片并命名
fb.write(image) #寫入內容
print('正在下載第%s張圖片'%num)
num=num+1 #變量遞增
print("下載完成")
步驟四:函數調用
#調用函數
url='#39; #傳入url路徑
html=(url)#加載頁面
(html)#圖片下載
關鍵單詞釋義
如果第一次接觸爬蟲代碼,相信有幾個單詞大家很陌生,為了方便記憶我把他們歸類到一起加深印象,你也可以拿出一張白紙試著努力回憶著。
1.爬蟲協議庫、.
2.正則匹配庫rb
3.發送請求方法()
4.打開頁面方法()
5.讀取數據方法read()
6.正則表達式-所有圖片【\S】*.jpg
7.匹配模式定義()
8.查找匹配()
9.循環遍歷語句 for a in b
10.打開文件 并命名 with open()... as fb
11.寫到... write*()
12.輸出語句 print()
到現在為止可以把我上面的代碼在中打開嘗試著運行起來吧!
最后,有2個報錯信息匯總供參考:
1. '' has no ''
定位到當行語句,發現 單詞拼寫錯誤。
2. 沒有報錯,但是圖片沒有下載成功
重新檢查代碼,發現正則表達式寫的有錯誤,記住是大寫的S修改完之后看效果。
我是誰?
我是一名從事了多年軟件測試的老測試員,今年年初我花了一個月整理了一份最適合2020年學習的軟件測試學習干貨,可以送給每一位對軟件測試感興趣的小伙伴,想要獲取的可以關注我的頭條號+私信:【測試】,即可免費獲取。