专栏首页嘘、小点声python网络爬虫(8)多媒体文件抽取

python网络爬虫(8)多媒体文件抽取

目的

批量下载网页图片

导入库

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • openV**交叉编译步骤

    openvpn在使用过程中,依赖于系统时间ntpdate,openssl,libpam,lzo,tun。因此要成功安装并能够使用openvpn,需要满足这些条件

    嘘、小点声
  • iptables交叉编译记事

    为了确认生出的.config文件合适,使用diff命令,不做更改保存.config,确定.config文件是否一致。

    嘘、小点声
  • 创建局域网方案!!!!!--交叉编译步骤和使用事项!!

    openvpn在使用过程中,依赖于系统时间ntpdate,openssl,libpam,lzo,tun。因此要成功安装并能够使用openvpn,需要满足这些条件

    嘘、小点声
  • 云数据备份并不是云灾难恢复

    云数据备份不是云灾难恢复。不幸的是,供应商的虚假陈述正在推动企业应该如何使用云备份的误解。许多组织正在考虑云备份,因为它消除了基于磁带的备份技术,自动备份,删除...

    静一
  • 【专业技术第七讲】linux下如何编译C语言?

    存在问题: 小伙伴们都知道gcc -c -o 但是其中的过程和一些参数就不是太清楚了,往往编译出错不知道咋办? 解决方案: 我们来简单普及一下,让大家不盲从请...

    程序员互动联盟
  • Easyui 修改jquery validatebox为英文校验提示为中文提示

    授客
  • 数据的艺术 Teradata数据科学家数据可视化作品集

    近日,在Teradata大数据峰会上展出了由Teradata数据科学家及数据顾问提供的一系列的”数据分析艺术”数据分析视觉化展,继阿姆斯特丹Teradata U...

    CSDN技术头条
  • 神经网络架构搜索(NAS)基础入门

    网络架构搜索(NAS)已成为机器学习领域的热门课题。商业服务(如谷歌的AutoML)和开源库(如Auto-Keras[1])使NAS可用于更广泛的机器学习环境。...

    deephub
  • Dolo上架了~

    Dolo上架了~ taptap: https://www.taptap.com/app/77329 ? app store: https://itunes.ap...

    沙因Sign
  • 程序员C语言快速上手——进阶篇(七)

    最早的C语言仅仅用来编写小而美的代码,总共不超过100行,随着计算机软件的发展,小程序变成了大型软件工程,整个项目是由多人协同开发完成的,一个人显然已经玩不动了...

    arcticfox

扫码关注云+社区

领取腾讯云代金券