案例一:爬取网站图片

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

  

 

posted @ 2019-07-22 17:01  奔跑中的兔子  阅读(938)  评论(0编辑  收藏  举报