python网络爬虫(8)多媒体文件抽取
2024-09-05 07:15:38
目的
批量下载网页图片
导入库
urllib中的request中的urlretrieve方法,可以下载图片
lxml用于解析网页
requests用于获取网站信息
import urllib
from lxml import etree
import requests
定义回调函数
回调函数中,count表示已下载的数据块,size数据块大小,total表示总大小。
在使用urllib中的request中的urlretrieve方法时,加入的回调函数,会在每次数据块传递完毕时触发,传递参数,可作为下载进度使用。
def schedule(count,size,total):
per=100.0*count*size/total
if per>100:
per=100
pass
print('当前进度:',per)
pass
获取图片地址
通过request获取图片地址后,通过xpath语法,对全局查找img标签,获取其src属性。即图片地址
user_agent='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'
headers={'User-Agent':user_agent}
r=requests.get('https://www.ivsky.com/tupian/keaiertong_t19487/',headers=headers)
html=etree.HTML(r.text)
img_urls=html.xpath('.//img/@src')
下载
归并地址,命名文件路径和文件名,设定回调函数,完成下载。
i=0
for img_url in img_urls:
urllib.request.urlretrieve('http:'+img_url,'img'+str(i)+'.jpg',schedule)
i+=1
print('finish')
另外一组图片下载的完整代码
import requests
from lxml import etree
import urllib
def schedule(count,size,total):
per=100.0*count*size/total
if per>100:
per=100
pass
print('当前进度:',per)
pass
user_agent='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'
headers={'User-Agent':user_agent} for i in range(10):
r=requests.get('https://www.ivsky.com/tupian/daimaozi_de_meinv_v52173/pic_8185'+str(55+i)+'.html#al_tit',headers=headers)
html=etree.HTML(r.text)
url=html.xpath('.//*[@id="imgis"]')[0].xpath('./@src')[0]
urllib.request.urlretrieve('http:'+url,'img'+str(i)+'.jpg',schedule)#download
print('finish')
最新文章
- 快速学习html、css的经典笔记
- ZZUOJ1196: 单调数
- App开发流程之Xcode配置和本地化
- D6 I
- flasCC技术点记录
- java截取url中的值
- ubuntu无法解析主机错误与解决的方法
- 思维导图(自己整理,希望对大家有用):JavaScript函数+canvas绘图+Array数组
- 关于css3中transform的理解(只是改变状态未改变其真正的属性)
- LayoutInflater 类的使用
- MES项目参观交流会
- Bloom filter 2
- Maven项目打包为jar的几种方式
- mysql中CONCAT值为空的问题解决办法
- php5.6 安装intl扩展
- cdnbest配置强制ssl跳转
- 2017-12-22 日语编程语言";抚子";-第三版实现初探
- float:浮点型double:双精度实型decimal:数字型单精度浮点数(Single)双精度浮点数(double)
- 让HTMLrunner 报告的子列表都 默认展示出来的 方法(方便发送邮件时可以方便查看)
- 【Alpha】阶段第七次Scrum Meeting
热门文章
- 如何使用getattr运行单个函数
- MediaFoundation初步研究
- SRS之SrsRtmpConn::stream_service_cycle详解
- Ubuntu16.04配置vncserver后 导致重复进入登陆界面,无法进入桌面的问题
- python:将numpy数组写入csv文件
- vue-lazyload 的vue 懒加载的使用
- python 装饰器 (test = submit(test))
- css常见小问题(自己遇到的)
- LC 535. Encode and Decode TinyURL
- js的window.onscroll事件兼容各大浏览器