天天看點

微網誌高清圖檔爬取用到的庫由于高清圖需要登陸浏覽,是以需要cookie具體操作具體代碼

微網誌高清圖簡單爬取

  • 用到的庫
  • 由于高清圖需要登陸浏覽,是以需要cookie
  • 具體操作
  • 具體代碼

用到的庫

requests,json

由于高清圖需要登陸浏覽,是以需要cookie

根據我的測試,cookie隻需要一項,就是sub=。。。。。。。。那一項,

具體操作

首先,打開微網誌,搜尋你想下載下傳圖檔的部落客,然後點選他的相冊,調出調試模式,然後點選一下第一張圖檔,在右方network選項的xhr分支裡面會加載幾個新出現的對象。

微網誌高清圖檔爬取用到的庫由于高清圖需要登陸浏覽,是以需要cookie具體操作具體代碼

我們打開帶有popview字樣的連結,發現其内容為圖檔清單,含有大約二十個圖檔的關鍵資訊

微網誌高清圖檔爬取用到的庫由于高清圖需要登陸浏覽,是以需要cookie具體操作具體代碼

然後我們點選圖檔的右上角有一個檢視原圖:

微網誌高清圖檔爬取用到的庫由于高清圖需要登陸浏覽,是以需要cookie具體操作具體代碼

發現原圖的格式為“https://photo.weibo.com/1350995007/wbphotos/large/mid/4614978633990921/pid/001tqDw3ly1gokg1s68w7j61rv2gcu0x02”

後面的mid與pid就在我們剛才介紹的圖檔清單裡面。

具體代碼

上面介紹的圖檔清單,那二十個圖檔資訊是根據你輸入的第一個圖檔資訊而産生的清單,是以我們隻需要對清單的最後一個進行通路。

import requests
import json
mid = 4614978633990921
pid= '001tqDw3ly1gokg1rbkdaj60ku112nk702'   #初始化mid,pid
headers = {'cookie': "SUB=_2A25NS0PmDeRhGeVP4lAY9ynFwz-IHXVuITIurDV8PUNbmtANLXWmkW9NTSX4apd_mfU2CQ3j2dPDsDtaLUXZI61r"}
pic_url_list = []
while 1:
    url1 = 'https://weibo.com/aj/photo/popview?mid=%s&pid=%s&uid=1350995007'%(mid, pid)
    try:
        r = requests.get(url1, headers=headers)
        r_list = json.loads(r.text)['data']['pic_list']
        for data in r_list:
            mid = data['mid']
            pid = data['pid']
            pic_url = "https://photo.weibo.com/1350995007/wbphotos/large/mid/%s/pid/%s"%(mid, pid)
            print(pic_url)
            pic_url_list.append(pic_url)
    except:
        break
           

結果

微網誌高清圖檔爬取用到的庫由于高清圖需要登陸浏覽,是以需要cookie具體操作具體代碼

最後好像會有重複的圖檔,每次的最後一個都是下次請求清單的第一個,可以酌情删掉