【Python】Python加lxml实现图片解析下载功能
1、下载网页:OpenHtml.py
import urllib.request
from urllib.parse import quote class HtmlLoader(object):
def Open(self, chaper_url):
if chaper_url is None:
return None
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
req = urllib.request.Request(url=chaper_url, headers=headers)
response = urllib.request.urlopen(req)
if response.getcode() != 200:
return None
return response.read()
2、解析图片:ImageAnalysis.py
import OpenHtml
from urllib.parse import quote
import lxml.html class Imager:
def Analysis(self,url):
# 解决中文搜索问题 对于:?=不进行转义
root_url = quote(url, safe='/:?=')
openhtml=OpenHtml.HtmlLoader()
html = openhtml.Open(url)
# 将HTML解析为统一的格式
tree = lxml.html.fromstring(html)
# 通过lxml的xpath获取src属性的值,返回一个列表
img = tree.xpath('//img[@class="BDE_Image"]/@src')
return img
3、下载图片:LoadFile.py
import urllib.request as re class Loader:
def callback(self,a,b,c):
'''回调函数可以用来显示进度
@a:已经下载的数据块个数
@b:数据块的大小
@c:远程文件的大小
'''
per=100.0*a*b/c
if per>100:
per=100
print('%.2f%%' % per) def Down(self, url, filename):
# dir = os.path.abspath('.')
# work_path = os.path.join(dir, 'baidu.html')
re.urlretrieve(url, filename, self.callback)
4、启动文件,即测试文件main.py
#!/usr/bin/env python
# coding=utf-8 import ImageAnalysis
import LoadFile def downimge():
# url = "http://www.btany.com/search/桃谷绘里香-first-asc-1"
url = "https://tieba.baidu.com/p/5475267611"
imganalysis=ImageAnalysis.Imager()
img=imganalysis.Analysis(url)
# 迭代列表img,将图片保存在当前目录下
x=0
download=LoadFile.Loader()
for i in img:
download.Down(i, 'C:\\Users\\luffy\\Desktop\\img\\%s.jpg' % x)
x += 1 if __name__ == '__main__':
downimge()
# download = LoadFile.Loader()
# download.Down('http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2', 'C:\\Users\\luffy\\Desktop\\img\\Python-2.7.5.tar.bz2')
urllib模块提供的urlretrieve()函数。urlretrieve()方法直接将远程数据下载到本地。
urlretrieve(url, filename=None, reporthook=None, data=None)
- 参数filename指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
- 参数reporthook是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。
- 参数data指post导服务器的数据,该方法返回一个包含两个元素的(filename, headers) 元组,filename 表示保存到本地的路径,header表示服务器的响应头
【Python】Python加lxml实现图片解析下载功能的更多相关文章
- 使用python+xpath 获取https://pypi.python.org/pypi/lxml/2.3/的下载链接
使用python+xpath 获取https://pypi.python.org/pypi/lxml/2.3/的下载链接: 使用requests获取html后,分析html中的标签发现所需要的链接在& ...
- 【Python学习 】Python实现的FTP上传和下载功能
一.背景 最近公司的一些自动化操作需要使用Python来实现FTP的上传和下载功能.因此参考网上的例子,撸了一段代码来实现了该功能,下面做个记录. 二.ftplib介绍 Python中默认安装的ftp ...
- 文件处理工具 gif合成工具 文件后缀批量添加工具 文件夹搜索工具 重复文件查找工具 网页图片解析下载工具等
以下都是一些简单的免费分享的工具,技术支持群:592132877,提供定制化服务开发. Gif动图合成工具 主要功能是扫描指定的文件夹里的所有zip文件,然后提取Zip文件中的图片,并合成一张gif图 ...
- 利用js加载本地图片预览功能
直接上代码: 经测试,除safari6包括6以下不支持,其他均可正常显示. 原因:safari6不支持filereader,同时不能使用IE滤镜导致失效. fix: 可以利用canvas,解决safa ...
- Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3)
1. 异步加载爬虫 对于静态页面爬虫很容易获取到站点的数据内容,然而静态页面需要全量加载站点的所有数据,对于网站的访问和带宽是巨大的挑战,对于高并发和大访问访问量的站点来说,需要使用AJAX相关的技术 ...
- PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转
[强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...
- 通过base64实现图片下载功能(基于vue)
1. 使用场景 当我们处理图片下载功能的时候,如果本地的图片,那么是可以通过canvas获得图片的base64的,方法如下.但是如果图片的url存在跨域问题的话,下面的方法将行不通,这时候我们可以另辟 ...
- 【图文详解】python爬虫实战——5分钟做个图片自动下载器
python爬虫实战——图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,(没看的先去看!!)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap sho ...
- 如何用Python爬虫实现百度图片自动下载?
Github:https://github.com/nnngu/LearningNotes 制作爬虫的步骤 制作一个爬虫一般分以下几个步骤: 分析需求 分析网页源代码,配合开发者工具 编写正则表达式或 ...
随机推荐
- Linux学习笔记(九)
<span style="font-size:18px;">本人使用的是centos 因为用使用些特殊命令.不得不改动系统的时间这里总结例如以下: date 查看系统时 ...
- 菜鸟译文(二)——使用Java泛型构造模板方法模式
如果你发现你有很多重复的代码,你可能会考虑用模板方法消除容易出错的重复代码.这里有一个例子:下面的两个类,完成了几乎相同的功能: 实例化并初始化一个Reader来读取CSV文件: 读取每一行并解析: ...
- 菜鸟学Java(十一)——GET与POST
相信大家在面试的时候经常会被问到:GET与POST有什么区别吧?你是怎么回答的呢?POST比GEt安全?GET有URL的长度限制而POST没有或者很大?GET通过URL或者Cookie传参数,POST ...
- 转:Git: git stash 用法小结
一.应用场景 综合下网上的介绍和资料, git stash (git储藏)可用于以下情形: 发现有一个类是多余的,想删掉它又担心以后需要查看它的代码,想保存它但又不想增加一个脏的提交.这时就可以考虑 ...
- Java 必须掌握的 12 种 Spring 常用注解!
1.声明bean的注解 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在数据访问层使用(dao层) @Controller ...
- 每日英语:Can Robots Better Spot Terrorists at Airports?
Next to have their jobs automated: airport-security screeners? Aviation and government authorities a ...
- 19、UWP 新特性(Creator Update)
Build 版本 15063+ 1.能够为 CompositionObjects 的其他属性(阴影,裁剪,属性集合)添加动画 2.当设备插上电源的时候,通过 Extended Excution Ses ...
- 【web技术】html特效代码(一)
小续 还记得当初和八哥一起制作百家成员chm电子书的时候,各种特效啊,这里收集了一些个人比较喜欢的html特效,看个人喜欢了,不喜勿喷啊 html特效代码(一) html特效代码(二) 3D相册代码 ...
- 阿里druid连接池监控配置
首先在web.xml中添加如下配置: <filter> <filter-name>DruidWebStatFilter</filter-name> <filt ...
- spark快速上手
spark快速上手 前言 基于Spark 2.1版本 仅仅是快速上手,没有深究细节 主要参考是官方文档 代码均为官方文档中代码,语言为Scala 进入spark-shell 终端输入spark-she ...