斗圖會輸?不存在的

本文概要

前言:

本文非常淺顯易懂,可以說是零基礎(chǔ)也可快速掌握。如有疑問,歡迎留言,筆者會第一時間回復(fù)。本文代碼存于github

一、分析表情包網(wǎng)址

進(jìn)入斗圖啦

1、進(jìn)入斗圖啦網(wǎng)址,點擊“最新表情”,再點擊第二、第三頁,得出規(guī)律如下:

第一頁:https://www.doutula.com/photo/list/?page=2
第三頁:https://www.doutula.com/photo/list/?page=3
第四頁:https://www.doutula.com/photo/list/?page=4

可以看出,page 的值跟點擊的頁數(shù)有關(guān),因此,我們就拿到了要爬取的 url

2、打開檢查元素,可以看到html源碼

html源碼

可以看出,每一頁的圖片都在 div 標(biāo)簽里面,然后每一個 a 標(biāo)簽包含一個圖片,

html源碼

我們要取到表情包,就是要取得 a 標(biāo)簽包含的圖片 url,我們可以利用 xpath 語法。

二、實踐

a、獲取 img 標(biāo)簽取到的 img 有 gif 的信息,我們需要過濾掉
imgs = html.xpath("http://div[#class='page-content text-center'//img[@class != 'gif']")

b、接下來是獲取圖片的 url,上面的代碼如下:

    for img in imgs:
        # print(etree.tostring(img))
        img_url = img.get('data-original')  # 不知道為什么多個 !data ,去掉它
        img_url = img_url.replace("!dta", "")

c、截取后綴,得到文件名,并保存

        alt = img.get('alt') # 獲取圖片名字
        # alt 可能某些情況下需要處理非法字符(這些字符不可以當(dāng)做名字保存)
        suffix = os.path.splitext(img_url)[1] # 對url進(jìn)行分割,取數(shù)組中的第二位,得到后綴名
        filename = alt + suffix
        request.urlretrieve(img_url, 'images/' + filename) # 保存圖片

這樣下來,就已經(jīng)可以快速保存你所需要的表情包了,論斗圖,誰比得過你


全部代碼如下:

def parse_page(url):

    headers = {
        'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    # print(response.text) # 打印html源代碼
    html = etree.HTML(response.text)
    imgs = html.xpath("http://div[@class='page-content text-center']//img[@class!='gif']")
    for img in imgs:
        # print(etree.tostring(img))
        img_url = img.get('data-original')  # 不知道為什么多個 !data ,去掉它
        img_url = img_url.replace("!dta", "")
        # print(img_url)
        alt = img.get('alt') # 獲取圖片名字
        # alt 可能某些情況下需要處理非法字符(這些字符不可以當(dāng)做名字保存)
        print(alt)
        suffix = os.path.splitext(img_url)[1] # 對url進(jìn)行分割,取數(shù)組中的第二位,得到后綴名
        filename = alt + suffix
        print(filename)
        request.urlretrieve(img_url, 'images/' + filename) # 保存圖片

def main():
    for x in range(1,51): # # 爬取前50頁 range(1,3) 這里相當(dāng)于 1 2
        url = 'https://www.doutula.com/photo/list/?page=%d' % x
        parse_page(url)
        break

最終結(jié)果:


斗圖.png

區(qū)區(qū)20幾行代碼,就可以造就一個斗圖西方求敗的你,趕快來行動吧!


當(dāng)然,還可以更高級一點,就是利用多線程,異步進(jìn)行爬取、下載,幾秒鐘就可以下載到上千張的表情包!相關(guān)代碼,我也放到了 github ,需要的朋友自行去look look!

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

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

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,186評論 3 119
  • .py以.py為擴(kuò)展名的是python的源代碼文件,平常大量接觸和使用都是.py文件,可以用文本編輯器修改。 .p...
    露華濃閱讀 1,051評論 0 0
  • 版本記錄 前言 2017年iOS版本更新到了11.0的系統(tǒng),新機(jī)器比如iPhone X都是預(yù)裝11.0的系統(tǒng),而我...
    刀客傳奇閱讀 2,934評論 0 2
  • 晚上八點, 走在山間小路 月光柔軟 閉上眼睛 感受風(fēng)的呢喃 心情也隨著風(fēng)的故事飄蕩 蟲兒對歌 是求愛還是訴說生活 ...
    醉夢塵馬小賤閱讀 341評論 0 0

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