这次需要爬取的图片内容为: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)