爬蟲之正則匹配
阿新 • • 發佈:2021-02-13
圖片爬取
資料解析原理概述
- 解析的區域性的文字內容都會在標籤之間或者標籤對應的屬性中進行儲存
- 所以在進行資料解析時,應該分為兩步
1.進行指定標籤的定位
2.對標籤或標籤對應的屬性中儲存的資料進行提取
案例:
這裡爬取的是糗事百科中的圖片部分,我們可以先檢查一下頁面的html。
可以看到,所有圖片都以這樣的標籤形式儲存在頁面中,所以我們要想爬取頁面上的圖片,首先應該先獲取頁面的html檔案,然後以正則表示式,讓圖片的標籤與整個html進行匹配,從而獲取到所有圖片的src。程式碼如下:
if __name__ == '__main__':
headers = {
"User-Agent": "Mozilla/5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 88.0.4324.150 Safari / 537.36"
}
# 建立一個資料夾 儲存所有圖片
if not os.path.exists("./qiutuLibs"):
os.mkdir("./qiutuLibs")
url="https://www.qiushibaike.com/imgrank/page/%d/"
for pageNum in (1,13):
new_url=format(url%pageNum)
# 使用正則對圖片進行解析——聚焦爬蟲
ex='<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
page_text = requests.get(url=new_url, headers=headers).text
img_src_list=re.findall(ex,page_text, re.S)
for src in img_src_list:
src="https:"+src
img_data=requests.get(url=src,headers=headers).content
# 圖片名稱
img_Name=src.split('/')[-1]
img_Path='./qiutuLibs/'+img_Name
with open(img_Path,"wb") as fp:#儲存二進位制的資料,用wb,同時也不需要指定編碼
fp.write(img_data)
print(img_Name+"下載成功")