抓取动态网页(最简单的做法就是找到微博评论数据接口,应该怎么实现?)

优采云 发布时间: 2022-04-06 01:29

  抓取动态网页(最简单的做法就是找到微博评论数据接口,应该怎么实现?)

  【Part1-理论篇】

  想想一个问题,如果我们要抓取一条微博大V微博的评论数据,该怎么做呢?最简单的方法是找到微博评论数据接口,然后更改参数获取最新数据并保存。首先,寻找微博api抓取评论的接口,如下图。

  

  但是很遗憾,这个界面的使用频率有限,被抓了几次就被封禁了。在它开始起飞之前,它很冷。

  

  接下来小编选择微博移动端网站,先登录,然后找到我们要抓取评论的微博,打开浏览器自带的流量分析工具,一直拉下评论,找到评论数据接口,如下图。

  

  然后点击“参数”选项卡,可以看到参数如下图所示:

  

  可以看到一共有4个参数,其中第二个参数1、是微博的id,就像一个人的*敏*感*词*号,这个相当于微博的“*敏*感*词*号”, max_id 是更改页码的参数,每次都必须更改。下一个 max_id 参数值在此请求的返回数据中。

  

  【Part2-实战】

  有了上面的基础,我们开始用 Python 编写代码并实现它。

  

  1、先区分url,第一次不需要max_id,第二次需要第一次返回的max_id。

  

  2、请求时需要带上cookie数据。微博cookies的有效期比较长,足以捕捉一条微博的评论数据。cookie 数据可以从浏览器分析工具中找到。

  

  3、然后将返回的数据转换成json格式,提取评论内容、评论者昵称、评论时间等数据。输出结果如下图所示。

  

  4、为了保存评论内容,我们需要将评论中的表达式去掉,使用正则表达式进行处理,如下图所示。

  

  5、 然后将内容保存为txt文件,使用简单的open函数实现,如下图所示。

  

  6、关键是通过这个接口最多只能返回16页数据(每页20条)。网上也有报道说它返回50页,但是界面不同,返回的数据条数也不同,所以我加了一个for循环,一步到位,遍历还是很厉害的,如下图所示。

  

  7、这里的函数名为job。为了总能取出最新的数据,我们可以使用 schedule 给程序添加定时功能,每隔 10 分钟或半小时抓取一次,如下图所示。

  

  8、对获取的数据进行去重,如下图所示。如果评论已经存在,就通过它,如果没有,就继续添加它。

  

  这项工作基本完成。

  【第三部分——总结】

  这种方法虽然没有捕捉到所有的数据,但在这种微博的约束下,也是一种比较有效的方法。

  最后,如果需要本文的代码,请后台回复“微博”二字,觉得不错记得给个star哦~

  看完这篇文章你有收获吗?请转发并分享给更多人

  IT 共享家庭

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线