Python批量爬取網站圖片


 

1.需要用到的庫有: 

      Requests    re    os    time 如果沒有安裝的請自己安裝一下,pycharm中打開終端輸入命令就可以安裝

  

 

 

 

    2.IDE : pycharm

    3.python 版本: 3.8.1

2.爬取地址:

https://www.vmgirls.com/9384.html

-------------------廢話不多說了,不懂的可以給我留言哦,接下來我們一步一步來操作------------------

 

1.請求網頁

1 # 請求網頁
2 import requests
3 
4 response=requests.get('https://www.vmgirls.com/9384.html')
5 
6 print(response.text)

  執行結果:

 

 

 發現請求到的是403,直接禁止了我們訪問,requests庫會告訴他我們是python過來的,他知道我們是一個python禁止我們反爬

 

 

 

 解決:

  我們可以偽裝頭,把頭設置一下

 

 

 

# 請求網頁
import requests

headers={
       'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36'
}
response=requests.get('https://www.vmgirls.com/9384.html',headers=headers)

print(response.request.headers)

執行結果:

  這樣頭就偽裝了

 

 

 

2.解析網頁

# 請求網頁
import requests
import re

headers={
       'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36'
}
response=requests.get('https://www.vmgirls.com/9384.html',headers=headers)

# print(response.request.headers)
# print(response.text)
html=response.text
#解析網頁
urls=re.findall('<img alt=".*?" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" width=".*?" height=".*?" class="alignnone size-full" data-src="(.*?)" data-nclazyload="true">',html)
print(urls);

 結果:

 

 

 

 可能對re.findall后面不太理解怎么來的,關鍵就是要找到圖片的dom然后根據re庫的一個匹配規則來匹配,要匹配的用(.*?)來表示,不需要匹配的用.*?來代替就可以了,

打開網址,按f12查看源碼找到圖片的代碼

 

 

 

 

 

 復制圖片代碼,打開網頁源碼按 ctrl+f 進行搜索,找到圖片源碼的位置

 

 

 

3.保存圖片

  具體可以看源碼,我給這些圖片創建了一個文件夾(需要os庫),並且命了名,這樣分類下次看小姐姐就比較容易找到啦

 

 

 

# 請求網頁
import time
import requests
import re
import  os
headers={
       'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36'
}
response=requests.get('https://www.vmgirls.com/9384.html',headers=headers)

# print(response.request.headers)
# print(response.text)
html=response.text

# 解析網頁
# 目錄名字
dir_name=re.findall('<img alt="(.*?)" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" width=".*?" height=".*?" class="alignnone size-full" data-src=".*?" data-nclazyload="true">',html)[-1]
if not os.path.exists(dir_name):
    os.mkdir(dir_name)
urls=re.findall('<img alt=".*?" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" width=".*?" height=".*?" class="alignnone size-full" data-src="(.*?)" data-nclazyload="true">',html)
print(urls);

# 保存圖片
for url in urls:
    # 加個延時,避免給服務器造成壓力
    time.sleep(1)
    # 圖片的名字
    file_name=url.split('/')[-1]
    response = requests.get(url, headers=headers)
    with open(dir_name+'/'+file_name,'wb') as f:
        f.write(response.content)

 


免責聲明!

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



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