python網絡爬蟲(8)多媒體文件抽取

目的

批量下載網頁圖片html

導入庫

urllib中的request中的urlretrieve方法,能夠下載圖片python

lxml用於解析網頁函數

requests用於獲取網站信息網站

import urllib
from lxml import etree
import requests

定義回調函數

回調函數中,count表示已下載的數據塊,size數據塊大小,total表示總大小。url

在使用urllib中的request中的urlretrieve方法時,加入的回調函數,會在每次數據塊傳遞完畢時觸發,傳遞參數,可做爲下載進度使用。xml

def schedule(count,size,total):
    per=100.0*count*size/total
    if per>100:
        per=100
        pass
    print('當前進度:',per)
    pass

獲取圖片地址

經過request獲取圖片地址後,經過xpath語法,對全局查找img標籤,獲取其src屬性。即圖片地址htm

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

下載

歸併地址,命名文件路徑和文件名,設定回調函數,完成下載。blog

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')   
相關文章
相關標籤/搜索