微博高清图简单爬取
- 用到的库
- 由于高清图需要登陆浏览,所以需要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
结果
最后好像会有重复的图片,每次的最后一个都是下次请求列表的第一个,可以酌情删掉