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

之前写过一篇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。
  • 不管是微博动态还是相册,图片都有四种大小。其他的估计也有类似的情况。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python爬虫微博的过程可以分为以下几个步骤: 1. 确定要爬取的微博页面。可以通过查看微博源代码来确定要抓取的内容在哪里,比如需要抓取正文或评论等。 2. 引入所需要的Python库。在爬虫过程中,常用的库有re、requests和beautifulsoup。re模块可以用于匹配字符串,提取所需要的部分。requests是一个用于发起HTTP请求的库,比urllib更加方便。beautifulsoup则提供了一些简单的函数来处理导航、搜索和修改分析树等功能。 3. 对微博页面进行解析和清洗。可以使用re模块对微博文本内容进行简单的清洗操作,比如去除换行符等,以得到干净的结果。 4. 使用requests库发起HTTP请求,获取微博页面的源代码。 5. 使用beautifulsoup库对源代码进行解析,提取所需的内容,如正文或评论等。 6. 对提取的内容进行进一步处理,可以根据需要进行保存、分析或展示。 请注意,爬取网站的内容需要遵守相关的法律法规和网站的使用协议,避免侵犯他人的权益。建议在进行任何爬虫活动前,先了解并遵守相关规定。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python3--爬虫--微博爬虫实战](https://blog.csdn.net/weixin_46863267/article/details/108512962)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [通过微博简易上手Python爬虫](https://blog.csdn.net/weixin_43827628/article/details/113139618)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大骨熬汤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值