目的

批量下载网页图片

导入库

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

  

python网络爬虫(8)多媒体文件抽取的更多相关文章

  1. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  2. Python网络爬虫学习总结

    1.检查robots.txt 让爬虫了解爬取该网站时存在哪些限制. 最小化爬虫被封禁的可能,而且还能发现和网站结构相关的线索. 2.检查网站地图(robots.txt文件中发现的Sitemap文件) ...

  3. 第三次作业-Python网络爬虫与信息提取

    1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 过程. 5.写一篇不少于100 ...

  4. 关于Python网络爬虫实战笔记③

    Python网络爬虫实战笔记③如何下载韩寒博客文章 Python网络爬虫实战笔记③如何下载韩寒博客文章 target:下载全部的文章 1. 博客列表页面规则 也就是, http://blog.sina ...

  5. 关于Python网络爬虫实战笔记①

    python网络爬虫项目实战笔记①如何下载韩寒的博客文章 python网络爬虫项目实战笔记①如何下载韩寒的博客文章 1. 打开韩寒博客列表页面 http://blog.sina.com.cn/s/ar ...

  6. python 网络爬虫(二) BFS不断抓URL并放到文件中

    上一篇的python 网络爬虫(一) 简单demo 还不能叫爬虫,只能说基础吧,因为它没有自动化抓链接的功能. 本篇追加如下功能: [1]广度优先搜索不断抓URL,直到队列为空 [2]把所有的URL写 ...

  7. python网络爬虫学习笔记

    python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...

  8. Python网络爬虫

    http://blog.csdn.net/pi9nc/article/details/9734437 一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛 ...

  9. Python 正则表达式 (python网络爬虫)

    昨天 2018 年 01 月 31 日,农历腊月十五日.20:00 左右,152 年一遇的月全食.血月.蓝月将今晚呈现空中,虽然没有看到蓝月亮,血月.月全食也是勉强可以了,还是可以想像一下一瓶蓝月亮洗 ...

  10. Python网络爬虫笔记(五):下载、分析京东P20销售数据

    (一)  分析网页 下载下面这个链接的销售数据 https://item.jd.com/6733026.html#comment 1.      翻页的时候,谷歌F12的Network页签可以看到下面 ...

随机推荐

  1. ShareX的使用

    给截图设置边框 https://github.com/ShareX/ShareX/issues/2509 TaskSettings-->Image-->Effects-->image ...

  2. php改变header头返回值

    $code = '400 Bad Request'; header('HTTP/1.1 '.$code);

  3. java实现几种常用排序:选择排序

    一.选择排序介绍 选择排序,顾名思义就是用逐个选择的方式来进行排序,逐个选择出数组中的最大(或最小)的元素,直到选择至最后一个元素.此时数组完成了排序. 二.选择排序原理分析 三.选择排序代码实现 / ...

  4. 控制类名(className属性)

    className 属性设置或返回元素的class 属性. 语法: object.className = classname 作用: 1.获取元素的class 属性 2. 为网页内的某个元素指定一个c ...

  5. oracle中删除某个用户下的所有表

    一般的方法:先使用sql查询: SELECT 'DELETE FROM '|| table_name || ';' FROM USER_TABLES ORDER BY TABLE_NAME; 将查询结 ...

  6. fmri格式相关简介————转自网络

    转自莫毕业 目前,脑成像数据主要有DTI.fmri.3D三种模态.这些数据在分析前都要进行格式转换,不同公司的扫描仪存储格式也不尽相同.脑成像处理软件也很多,不同软件使用的格式也不一样,所以数据转换是 ...

  7. pytest.fixture和普通函数调用

    普通函数嗲用def one(): a="aaaaaaaaaaa" return a def test_one(): s=one() print (s) test_one() pyt ...

  8. rabbiit报错处理

    一.ping不同download.yunwei.edu 内网服务地址必须在前面 [root@localhost ~]# vim /etc/resolv.conf # Generated by Netw ...

  9. .net分流抢票助手

    官方网站: http://www.12306bypass.com/作者:Cheney.小风分流抢票基于.Net4.0框架开发,在Windows7之后的操作系统可直接打开.其他操作系统如打不开或者打开报 ...

  10. 在web项目中获取ApplicationContext上下文的3种主要方式及适用情况

    最近在做web项目,需要写一些工具方法,涉及到通过Java代码来获取spring中配置的bean,并对该bean进行操作的情形.而最关键的一步就是获取ApplicationContext,过程中纠结和 ...