• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

爬虫—微博博主动态和相册的请求构造规律

武飞扬头像
大骨熬汤
帮助1

之前写过一篇selenium爬取微博相册的文章,有朋友私信我说可不可以直接构造请求列表获取,因为selenium有些慢,毕竟每次请求都要等待网页加载渲染完,否则就获取不到那些按钮或输入框。

今天去看了一下,整理了微博精选动态和相册的请求规律,不涉及具体的代码,因为我们都知道要爬取数据首先就得构造出url,构造出来后,就是一些代理,请求头之类的操作了。不过我觉得只要访问频率没那么高,设置一个请求头,加一个Cookie就完全可以绕过登录直接获取数据。最后解析json就行了。

1. 查找的博主u_id

1.1 请求

通过https://s.weibo.com/ajax/topsuggest.php?key=博主名称&_k=1636439925298&_t=1&outjson=1&uid=自己账号的uid查找到他的u_id,后面的操作需要用到。

1.2 参数

参数 描述
key 待查找的博主的名称
_k 我没有找到是什么东西,但是我估计是时间戳,因为我发现这个值跟我当前的时间是就差了几毫秒,并且只要传入的是一个时间戳,返回的结果都是不变的
_t 不清楚是什么,固定为1
outjson 不清楚是什么,固定为1
uid 自己的uid

自己的uid可以通过点击头像查看,方法很多,因为你几乎所有的操作都要基于你的uid,所以很容易找到自己的uid的,例如:
学新通

图片中打码的都是自己的uid。

1.3 返回结果

返回的结果如下,user是一个列表,需要自己判断谁是指定的那个:
学新通

2. 查看动态

2.1 请求

动态是ajax加载的,需要构造请求。url: https://weibo.com/ajax/statuses/mymblog?uid=2331498495&page=1&feature=0

2.2 参数

参数 描述
uid 指定博主的uid
page 第一次加载为1,后面依次增加
feature 固定为0

2.3 返回结果

返回的结果如下:
学新通

注意圈出来的部分,因为页面是ajax加载的,这个值可以用来构造下一个链接,例如下一个链接就是:https://weibo.com/ajax/statuses/mymblog?uid=2331498495&page=2&feature=0&since_id=4623093169653741kp2

然后根据返回的结果,又可以构造下一个链接:https://weibo.com/ajax/statuses/mymblog?uid=2331498495&page=3&feature=0&since_id=下一个链接返回的since_id。注意,page是跟着累加的,feature不变。

注意,首次加载时没有since_id参数的,是从第二次开始有了这个参数,因为这个参数是从上一次参数的返回结果中获取的。

然后返回结果的list中的每一项就是每一条动态,包括图片,文案,访问量等信息。

3. 查看相册

3.1 请求

首次访问url: https://weibo.com/ajax/profile/getImageWall?uid=2331498495&sinceid=0&has_album=true

3.2 参数

参数 描述
uid 要访问的博主的uid
sinceid 首次访问时为0,后续会改变
has_album 首次访问时为true,后续就不需要了

3.3 返回结果

返回结果:
学新通
注意圈出来的部分,可用于构造下一次请求,例如下一次链接为:https://weibo.com/ajax/profile/getImageWall?uid=2331498495&sinceid=4692296133378252_4684344021486123_20211031_-1,然后又可以根据下一次返回的结果,构造下下次链接。list中的就是每一张照片的信息,如图:
学新通
地址不全,但是可以构造成:https://wx3.sinaimg.cn/orj360/上图圈出来的pid.jpg这种格式,这也是你在页面直接右键,复制图片地址得到的链接。

不过我发现微博动态和相册中的图片都有4种大小。分别是wap360、orj960、large和mw2000,图片尺寸依次增大。而默认得到的就是orj960。相信你也猜到了,要得到这四种不同尺寸的图片,只需要将链接https://wx3.sinaimg.cn/orj360/上图圈出来的pid.jpg中对应位置替换即可。

这样就可以得到相册中的所有图片了。

4. 总结

通过上面两个例子,可以发现一些规律:

  • 通过ajax加载的数据列表,都有一个初始的请求,然后请求的返回结果中的某个属性可以用来构造下一个请求。这也是在写爬虫的时候比较重要的一点,就是你如何构造出url。
  • 不管是微博动态还是相册,图片都有四种大小。其他的估计也有类似的情况。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgaeahh
系列文章
更多 icon
同类精品
更多 icon
继续加载