鬥圖會輸?不存在的

本文概要

前言:

本文很是淺顯易懂,能夠說是零基礎也可快速掌握。若有疑問,歡迎留言,筆者會第一時間回覆。本文代碼存於githubhtml

1、分析表情包網址

進入鬥圖啦
一、進入鬥圖啦網址,點擊** 「最新表情」**,再點擊第2、第三頁,得出規律以下:

第一頁:www.doutula.com/photo/list/… 第三頁:www.doutula.com/photo/list/… 第四頁:www.doutula.com/photo/list/…git

能夠看出,page 的值跟點擊的頁數有關,所以,咱們就拿到了要爬取的 url程序員

二、打開檢查元素,能夠看到html源碼 github

html源碼
能夠看出,每一頁的圖片都在 div 標籤裏面,而後每個 a 標籤包含一個圖片,

html源碼
咱們要取到表情包,就是要取得 a 標籤包含的圖片 url,咱們能夠利用 xpath 語法。

2、實踐

a、獲取 img 標籤取到的 img 有 gif 的信息,咱們須要過濾掉 imgs = html.xpath("//div[#class='page-content text-center'//img[@class != 'gif']")數組

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

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 可能某些狀況下須要處理非法字符(這些字符不能夠當作名字保存)
        suffix = os.path.splitext(img_url)[1] # 對url進行分割,取數組中的第二位,獲得後綴名
        filename = alt + suffix
        request.urlretrieve(img_url, 'images/' + filename) # 保存圖片
複製代碼

這樣下來,就已經能夠快速保存你所須要的表情包了,論鬥圖,誰比得過你 異步

所有代碼以下:ui

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("//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 可能某些狀況下須要處理非法字符(這些字符不能夠當作名字保存)
        print(alt)
        suffix = os.path.splitext(img_url)[1] # 對url進行分割,取數組中的第二位,獲得後綴名
        filename = alt + suffix
        print(filename)
        request.urlretrieve(img_url, 'images/' + filename) # 保存圖片

def main():
    for x in range(1,51): # # 爬取前50頁 range(1,3) 這裏至關於 1 2
        url = 'https://www.doutula.com/photo/list/?page=%d' % x
        parse_page(url)
        break
複製代碼

最終結果: url

鬥圖.png

區區20幾行代碼,就能夠造就一個鬥圖西方求敗的你,趕快來行動吧!

固然,還能夠更高級一點,就是利用多線程,異步進行爬取、下載,幾秒鐘就能夠下載到上千張的表情包!相關代碼,我也放到了 github ,須要的朋友自行去look look!




更多精彩內容,請關注公衆號 「bigdeveloper」——程序員大咖秀

相關文章
相關標籤/搜索