微博全站爬虫修复更新啦!!!
- 2019 年 12 月 4 日
- 筆記
说一声抱歉,当时那段时间我实在太忙,就没有立刻解决,但是记在备忘录上,但是今天下午终于可以有空闲了,就着手解决了这个问题;问题主要是由微博接口和网页结构的变化引起的,现将有关修改过程及结果修改如下;同时会详介绍如何获取 cookies 。
用户微博模块接口变化
原来的接口是
query_data = { 'keyword': self.keyword, 'suser': '找人' } search_response = requests.post(url='https://weibo.cn/search/', headers=self.headers, data=query_data,verify=False)
由于是抽取的类中的代码段,有些变量见名知意即可,不需要追究其值
后面我通过抓包发现,其接口变化为
query_data = { 'keyword': self.keyword, 'suser': '2' } search_response = requests.post(url='https://weibo.cn/find/user', headers=self.headers, data=query_data,verify=False)
可以发现,无论是接口的 URL 地址还是接口参数均有变化,但是看上去又不像是针对爬虫的,因为发爬的技术并没有升级,可能是业务逻辑的整合,只能这样猜测了。
主题微博模块接口变化
原来的接口是
res = requests.get(url='https://weibo.cn/search/mblog?keyword={}'.format(self.keyword), headers=self.headers,verify=False)
现改成了
data = { 'page': 1, 'keyword': self.keyword } res = requests.post(url='https://weibo.cn/search/mblog', headers=self.headers, data=data)
接口请求方式由 get 改成了参数隐秘性更好的 post。
如何获取 cookies
cookies 是什么,这里不引经据典了,一句话,cookies 是客户机(也就是你的 Chrome、FireFox 等浏览器)维持会话状态的一段字符串信息,微博就应用了这种技术。
怎么获取 cookies 呢?
打开微博登陆首页
https://passport.weibo.cn/signin/login?entry=mweibo&r=https%3A%2F%2Fweibo.cn%2F&backTitle=%CE%A2%B2%A9&vt=
F12 打开开发者工具(Mac OS 类似),并切换到 NetWork 标签页,如下

一切准备就绪后,点击页面上的登录按钮,按如下方式获得 cookies

如何获得最新代码
最新代码已更新在 Github:
https://github.com/Python3Spiders/