目的

批量下载网页图片

导入库

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')

  

最新文章

  1. 快速学习html、css的经典笔记
  2. ZZUOJ1196: 单调数
  3. App开发流程之Xcode配置和本地化
  4. D6 I
  5. flasCC技术点记录
  6. java截取url中的值
  7. ubuntu无法解析主机错误与解决的方法
  8. 思维导图(自己整理,希望对大家有用):JavaScript函数+canvas绘图+Array数组
  9. 关于css3中transform的理解(只是改变状态未改变其真正的属性)
  10. LayoutInflater 类的使用
  11. MES项目参观交流会
  12. Bloom filter 2
  13. Maven项目打包为jar的几种方式
  14. mysql中CONCAT值为空的问题解决办法
  15. php5.6 安装intl扩展
  16. cdnbest配置强制ssl跳转
  17. 2017-12-22 日语编程语言"抚子"-第三版实现初探
  18. float:浮点型double:双精度实型decimal:数字型单精度浮点数(Single)双精度浮点数(double)
  19. 让HTMLrunner 报告的子列表都 默认展示出来的 方法(方便发送邮件时可以方便查看)
  20. 【Alpha】阶段第七次Scrum Meeting

热门文章

  1. 如何使用getattr运行单个函数
  2. MediaFoundation初步研究
  3. SRS之SrsRtmpConn::stream_service_cycle详解
  4. Ubuntu16.04配置vncserver后 导致重复进入登陆界面,无法进入桌面的问题
  5. python:将numpy数组写入csv文件
  6. vue-lazyload 的vue 懒加载的使用
  7. python 装饰器 (test = submit(test))
  8. css常见小问题(自己遇到的)
  9. LC 535. Encode and Decode TinyURL
  10. js的window.onscroll事件兼容各大浏览器