文章采集接口( 一个写的python不能不能用了,原因是什么?)

优采云 发布时间: 2022-03-27 21:19

  文章采集接口(

一个写的python不能不能用了,原因是什么?)

  

  昨天想去Geek Time把我买的一个专栏里的数据拿起来,发现之前写的python脚本不能用了。原因是他们 网站 做了电流限制,并添加了一些对 http 时间戳的验证。. 我们可以改进之前的python脚本,使用ip代理池来处理限流,找到时间戳校验的规则。

  但是这次我们使用了另一种爬虫思路,就是直接写一些js脚本,在对方的网站中运行,请求对应的接口获取想要的数据。

  事实上,我见过很多这种想法的例子。有一个很流行的脚本自动点赞QQ空间。看了它的源码,其实很简单。就是直接操作dom,然后触发一些事件。

  另一个很流行的例子,github上一个很流行的repo,fuck知乎,据说是winter退休时写的知乎,数据保存在知乎中。

  以下是本次实践的内容:

  获取 文章id 集合

  第一次进列的时候会有一个请求获取左边的列表集合文章。在这个界面中,我们可以获取当前列的所有请求。

  

  本栏目有50多篇文章文章,由于限流,我们分成了两个请求。

  注入 FileSaver.js

  FileSaver 是一个在浏览器中运行并将数据下载为 json 或 excel 文件的库。

  

  这里我们创建一个脚本标签并将这个标签插入到文档中。

  

  我这里写了一个方法downloadJson,我们将这里得到的数据传递过来,我们就可以下载json文件了。

  创建请求

  创建一个 ajax 请求以请求接口以获取 文章 详细信息。

  

  这里我们使用原生js来写,是一个post请求,res是我们从这个接口得到的返回值,我们可以从这个返回值中取我们需要的数据。

  以上是单个请求的实现。多个请求的实现如下图所示。

  然后我们保存数据:

  

  所有结果都放在 rs 数组中。

  下载数据

  我们把所有的数据放到一个数组中,在最后一个请求的最后,执行我们写的downloadJson方法下载下来。

  

  导入数据库

  网上有很多工具可以将json文件导入数据库。这次我使用了我之前写的脚本。

  这个脚本在我的github上,用nodejs写的,地址:tomysql.js

  最后

  这一次,我们没有使用常见的做法,模拟一个请求,或者模拟一个浏览器,而是直接使用浏览器来采集data。当然,我们也需要根据实际情况选择使用哪种方法。

  完整脚本:geek.js

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线