码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-06-07 22:55:24      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:取图   回调   down   +=   lib   win   port   https   url   

目的

批量下载网页图片

导入库

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)多媒体文件抽取

标签:取图   回调   down   +=   lib   win   port   https   url   

原文地址:https://www.cnblogs.com/bai2018/p/10989324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!