這次需要爬取的圖片內容為:www.dbmeinv.com這個網站的圖片。
一、爬取一頁的圖片內容
import requests from lxml import etree import os
#1.獲取第一頁的url url="https://www.dbmeinv.com/?pager_offset=1"
#獲取頭的原因是為了解決反扒機制。通過User-Agent可以解決70%~80%的反扒。 headers={'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"} #2.發送請求,接受響應 response=requests.get(url,headers=headers) #3.提取數據 #生成一個xpath解析對象 selector=etree.HTML(response.text) #獲取第一頁所有圖片的URL列表 url_list=selector.xpath("//div/a/img/@src") #再次發送請求,獲取圖片內容
#定義一個path變量用於存放圖片位置 path="newpath" #遍歷第一頁中所有圖片的url列表 for url in url_list: if not os.path.exists(path): os.makedirs(path) #發送請求,接受響應 data = requests.get(url, headers = headers) #保存數據,寫入要用二進制 with open(path + "/"+url[-7:],"wb")as f: f.write(data.content)
說明:解決反扒,加入請求參數。例如通過User-Agent可以解決70%~80%的反扒問題。
二,爬取網站中所有頁的圖片
import requests from lxml import etree import os #1.url url_list=["https://www.dbmeinv.com/?pager_offset={}".format(i) for i in range(1,10)] headers={'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"} #2.發送請求,接受響應 for url in url_list: response=requests.get(url,headers=headers) #3.提取數據 #生成一個xpath解析對 selector=etree.HTML(response.text) #獲取圖片的URL列表 url_list2=selector.xpath("//div/a/img/@src") #再次發送請求,獲取圖片內容 path="newpath" for url in url_list2: if not os.path.exists(path): os.makedirs(path) #發送請求,接受響應 data = requests.get(url, headers = headers) #保存數據,寫入要用二進制 with open(path + "/"+url[-7:],"wb")as f: f.write(data.content)