博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬取下载图片,代码写得也是难看死,有时间优化吧
阅读量:6689 次
发布时间:2019-06-25

本文共 2195 字,大约阅读时间需要 7 分钟。

# -*-coding:utf-8-*- from lxml import etree import requests import sys, os, re class Meizitu(object):     def __init__(self):         # 设置序号为图片名         self.i = 1         # 构建url         self.url = 'http://www.meizitu.com/a/more_{}.html'         # 构建header         self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" } self.pattern = re.compile('http://www.meizitu.com/a/\d+.html', re.S) # 使用正则匹配url self.img_url = [] def get_page(self, url): response = requests.get(url, headers=self.headers) # print(response.encoding) # 返回内容编码编码格式 return response.content def parse_data(self, detail_data): # 取得图片页url str_data1 = self.pattern.findall(detail_data.decode('utf-8', 'ignore')) return str_data1 def pic_info(self, image_list): # 详细页面 img_url = [] for url in image_list: img_page = self.get_page(url) html = etree.HTML(img_page) if html is not None: img_detial_list = html.xpath('//img/@src') if img_detial_list: for i in img_detial_list: if i not in self.img_url: self.img_url.append(i) # 去重存到self.img_url img_url.append(i) def download(self): # print(image_list) if not os.path.exists('images'): os.makedirs('images') for url in self.img_url: print(url) data = self.get_page(url) with open('images' + os.sep + str(self.i) + '.jpg', 'wb+') as f: f.write(data) self.i = self.i + 1 def run(self): page = input('输入页码') self.url = 'http://www.meizitu.com/a/more_{}.html'.format(page)
print(self.url)         detail_data = self.get_page(self.url)         # 抽取图片url         image_list = self.parse_data(detail_data)         self.pic_info(image_list)         self.download() if __name__ == '__main__':     meizi = Meizitu()     meizi.run()

转载于:https://www.cnblogs.com/jianxiaoguo/p/7646907.html

你可能感兴趣的文章
Linux/Centos ntp时间同步,联网情况和无网情况配置
查看>>
初级网络运维工程师比赛题目
查看>>
跨交换机实现vlan实验报告
查看>>
如何在Rancher Catalog中使用VMware Harbor
查看>>
13.C#--求1-100之间所有整数的和
查看>>
40.C#--面对对象,类的继承和构造函数继承的使用
查看>>
列表,元组,集合
查看>>
jquery easyui滚动条部分设置介绍
查看>>
cannot find -lxxx问题
查看>>
预防云端开源项目打包 Redis Labs再更改模块
查看>>
超惊人!去年发生的身分外泄安全事件是2017的4倍
查看>>
oracle sqlplus免安装的配置instantclient-basiclite
查看>>
Java开发GUI之选择列表
查看>>
一、分布式商城架构逻辑图
查看>>
find命令详解
查看>>
2018年的“核心期刊陷阱”已开启,你知道吗?2018年的“核心期刊陷阱”已开启,你知道吗?...
查看>>
rsync+shell脚本完成自动化备份
查看>>
如何衡量机器人用激光雷达的实用性和可靠性
查看>>
机器人是如何完成避障的?机器人避障解决方案解读
查看>>
利用思维导图软件绘制鱼骨图怎样做
查看>>