天天看点

微博高清图片爬取用到的库由于高清图需要登陆浏览,所以需要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具体操作具体代码

最后好像会有重复的图片,每次的最后一个都是下次请求列表的第一个,可以酌情删掉