python网络爬虫多媒体文件抽取
Posted bai2018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python网络爬虫多媒体文件抽取相关的知识,希望对你有一定的参考价值。
目的
批量下载网页图片
导入库
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网络爬虫多媒体文件抽取的主要内容,如果未能解决你的问题,请参考以下文章