Python爬蟲筆記(3):利用requests和lxml庫(kù)爬取搞笑gif圖片

爬取完文字,今天就來(lái)爬起圖片練練手吧,這是練手的網(wǎng)站 居然搞笑網(wǎng)
咦,還有意外驚喜,發(fā)現(xiàn)里面的動(dòng)態(tài)圖片不但搞笑,還很養(yǎng)眼~~
好吧,爬一下試試吧

  1. 由于代碼比較簡(jiǎn)單,只有十幾行,就先上代碼吧
import requests
from lxml import etree
import time

def get_img(url):
    r = requests.get(url,headers=headers)
    r.encoding = r.apparent_encoding
    html = etree.HTML(r.text)
    list = html.xpath("http://div[@class='item']/div[@class='text']/p/img/@src")
    for img in list:
        img = str(img)
        img_name = img.split('/')[-1]
        pic = requests.get(img,headers=headers)
        with open('D:\\pics\\pic_gif\\'+img_name,'wb') as f:
            print('正在下載:',img_name)
            f.write(pic.content)



if __name__ == '__main__':
    urls = ['https://www.zbjuran.com/dongtai/list_4_{}.html'.format(str(i)) for i in range(1,2475)]

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36'
    }
    for url in urls:
        get_img(url)
        time.sleep(0.5)
  1. 代碼解釋
import requests
from lxml import etree
import time

首先導(dǎo)入需要用到的庫(kù),其中time模塊用來(lái)是延長(zhǎng)爬蟲爬取間隔,防止被封

def get_img(url):
    r = requests.get(url,headers=headers)
    r.encoding = r.apparent_encoding
    html = etree.HTML(r.text)
    list = html.xpath("http://div[@class='item']/div[@class='text']/p/img/@src")

定義一個(gè)獲取圖片的函數(shù),用xpath解析requests返回的網(wǎng)頁(yè),其中返回來(lái)的list是一個(gè)盛放多個(gè)圖片url的列表

for img in list:
        img = str(img)
        img_name = img.split('/')[-1]
        pic = requests.get(img,headers=headers)
        with open('D:\\pics\\pic_gif\\'+img_name,'wb') as f:
            print('正在下載:',img_name)
            f.write(pic.content)

從列表中遍歷url,并用spilt()函數(shù)獲取url斜杠最后一部分為圖片的名字
然后用open()函數(shù)加載圖片

if __name__ == '__main__':
    urls = ['https://www.zbjuran.com/dongtai/list_4_{}.html'.format(str(i)) for i in range(1,2475)]

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36'
    }
    for url in urls:
        get_img(url)
        time.sleep(0.5)

主程序入口,利用for循環(huán)構(gòu)造多頁(yè)url列表,再用for循環(huán)遍歷出來(lái)放入get_img()函數(shù)獲取多頁(yè)圖片,time.sleep()睡眠0.5秒

1541257121(1).png

不知道今天網(wǎng)絡(luò)原因還是寫的代碼有問(wèn)題,圖片下的特別慢,看來(lái)要學(xué)習(xí)一下怎么使用多線程了~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容