微博全站爬虫修复更新啦!!!

  • 2019 年 12 月 4 日
  • 筆記

说在前面的话 距离开源微博全站爬虫过去已经快半个月了,陆陆续续收到了一些粉丝们的反馈,包括如何获取 cookies主题爬虫模块失效了,以至于后来整个爬虫失效,

说一声抱歉,当时那段时间我实在太忙,就没有立刻解决,但是记在备忘录上,但是今天下午终于可以有空闲了,就着手解决了这个问题;问题主要是由微博接口和网页结构的变化引起的,现将有关修改过程及结果修改如下;同时会详介绍如何获取 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/