微網誌高清圖簡單爬取
- 用到的庫
- 由于高清圖需要登陸浏覽,是以需要cookie
- 具體操作
- 具體代碼
用到的庫
requests,json
由于高清圖需要登陸浏覽,是以需要cookie
根據我的測試,cookie隻需要一項,就是sub=。。。。。。。。那一項,
具體操作
首先,打開微網誌,搜尋你想下載下傳圖檔的部落客,然後點選他的相冊,調出調試模式,然後點選一下第一張圖檔,在右方network選項的xhr分支裡面會加載幾個新出現的對象。
我們打開帶有popview字樣的連結,發現其内容為圖檔清單,含有大約二十個圖檔的關鍵資訊
然後我們點選圖檔的右上角有一個檢視原圖:
發現原圖的格式為“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
結果
最後好像會有重複的圖檔,每次的最後一個都是下次請求清單的第一個,可以酌情删掉