python爬虫爬取图片
from lxml import etree
发送请求 获取数据
import requests
‘’’ 面向对象设计模式,保证代码规范 ‘’’
class Spider(object):
def init(self):
self.headers = { # 反反爬虫
# ‘Connection’: ‘close’,
“User-Agent”:“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36”,
“Referer”:“https://www.mzitu.com/tag/ugirls/”,
}
self.pages = [1,2,3]
pass
def start_request(self):
for i in range(1,4):
# 1.获取整站数据
# https://www.mzitu.com/page/2/
response = requests.get('https://www.mzitu.com/page/'+str(i)) # 请求
# print(response.text) # 请求得到的一个 文本内容
html = etree.HTML(response.text)
# 2.获取我们想要的数据 图片标题、图片链接
src_list = html.xpath('//img[@class="lazy"]/@data-original') # 图片地址,结果到一个列
alt_list = html.xpath('//img[@class="lazy"]/@alt') # 图片名称,结果是一个列
# 一个链接,一个名称 打包
for src, alt in zip(src_list, alt_list):
self.down_img(src, alt)
pass
'''
<img class="lazy" src="https://i.meizitu.net/thumbs/2019/02/170016_17b01_236.jpg"
data-original="https://i.meizitu.net/thumbs/2019/02/170016_17b01_236.jpg"
alt="春心已荡漾 性感美女心妍小公主热情似火霸气侧漏" width="236" height="354" style="display: inline;">
'''
pass
'''
Python3中两种数据模式
Bytes:二进制;(图片、音频、视频等...)
Unicode:str
'''
def down_img(self, src, alt):
# 3.图片下载,图片文件名定义 下载requests.get()
content = requests.get(src, headers = self.headers).content # .content 得到一个二进制文件
img_name = alt + ".jpg" # 定义图片名称
print("正在抓取图片:" + img_name)
# 4.图片保存
with open(img_name, "wb") as f: # wb 二进制写入
f.write(content)
pass
pass
pass
spider = Spider()
spider.start_request()
#pip install requests -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
#pip install lxml -i http://pypi.douban.com/simple --trusted-host pypi.douban.com