【Python】爬取百度貼吧帖子的圖片

貼吧:美圖吧
帖子:https://tieba.baidu.com/p/5838004691

一、目標
通過Python下載任意百度貼吧帖子的圖片並保存到本地。

二、分析網址
第一頁
在這裏插入圖片描述
第二頁
在這裏插入圖片描述
第三頁
在這裏插入圖片描述
我們可以發現:帖子的頁數會形成一個很有規律的網址:
https://tieba.baidu.com/p/5838004691?pn=1
最後的數字即頁數

三、分析網頁
我們點擊帖子的圖片之後會到達其資源網址:
在這裏插入圖片描述
可以在打開的資源網址或原帖子去保存圖片,但是這個不是我們的目標,我們要自動下載,而不是手動保存。

我們在帖子頁面點擊F12,Ctrl+F查找Image(圖片一般是Image),然後我們回車一個個的看,發現:
在這裏插入圖片描述
src中的網址右鍵Open in new tab,打開後是帖子中的圖片。

ok,目前爲止我們找到了帖子每一頁網址的內在規律;找到了帖子中圖片的src地址。
然後,我們需要編寫程序下載指定帖子的所有圖片並保存到本地了。

四、程序代碼

'''
@Author: ZoJet
@Date: 2019-06-19 19:00:47
@Version: 
@Content: 
'''

import re, os, requests
from bs4 import BeautifulSoup

# 數據包頭
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0',
    'Connection':'keep-alive',
}

s = requests.session()

# 得到圖片資源網址
def get_url(text):
    soup = BeautifulSoup(text, 'lxml')
    urls = soup.find_all('img', {'class':'BDE_Image'})
    url = [i.get('src') for i in urls]
    return url

# 保存圖片到指定文件夾
def save_img(url):
    img_name = url.strip().split('/')[-1]
    url_re = s.get(url.strip(), headers=headers)
    if url_re.status_code == 200:
        if not os.path.exists('download/tieba_img'):
            os.mkdir('download/tieba_img')
        open('download/tieba_img/' + img_name, 'wb').write(url_re.content)

# 指定帖子網址和下載頁數後開始下載
if __name__ == '__main__':
    # https://tieba.baidu.com/p/5838004691?pn=
    tiezi_web = input("請輸入帖子第一頁的網址:")
    # 38
    page_count = int(input("請輸入下載帖子圖片的頁數:"))
    pic_count = 0
    for i in range(page_count):
        url = tiezi_web + str(i + 1)
        web_content = s.get(url).text
        urls = get_url(web_content)

        for url in urls:
            pic_count += 1
            save_img(url)

    print("下載完畢,總共%d張圖" %pic_count)

五、運行結果
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章