python脚本不能用了,原因是他们网站做了限流

优采云 发布时间: 2021-02-08 09:00

  python脚本不能用了,原因是他们网站做了限流

  昨天我想去极客时间在我购买的一列中提取数据,结果发现我之前编写的python脚本无法使用。原因是他们网站设置了当前限制,并添加了一些http时间戳。测试。我们可以改进以前的python脚本,使用ip代理池处理当前限制,并找到时间戳验证的规则。

  但是这次我们使用了另一个爬虫概念,即,我们直接编写一些js脚本并在另一方的网站中运行它们,以请求相应的接口来获取所需的数据。

  事实上,我已经看到了许多这种思维的例子。以前,有一个非常受欢迎的脚本会自动喜欢QQ空间。阅读其源代码后,它实际上非常简单。直接操作dom并触发一些事件。

  另一个非常受欢迎的例子,据说是github上一个非常受欢迎的仓库,fuck知乎,是温特从知乎退休后写的,并将他的数据保存在知乎中。

  以下是此练习的内容:

  获取文章id集合

  第一次输入列时,将要求获取左侧的文章列表集。在此界面中,我们可以获取当前列的所有请求。

  

  此专栏文章中可能有超过50篇文章。由于当前的限制,我们将请求分为两部分。

  注入FileSaver.js

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

  

  我们在此处创建一个脚本标签,并将此标签插入文档中。

  

  我在这里编写了一个方法downloadJson。我们可以通过发送数据来下载json文件。

  创建请求

  创建一个ajax请求,请求文章详细信息的接口。

  

  在这里,我们使用本机js进行编写,这是一个发布请求,res是我们获得的该接口的返回值,我们只是从该返回值中取出所需的数据。

  以上是单个请求的实现。下图显示了多个请求的实现。

  然后我们保存数据:

  

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

  下载数据

  我们将所有数据放入一个数组中,并在最后一个请求的末尾,执行我们编写的downloadJson方法来下载它。

  

  导入数据库

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

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

  最后

  这次我们没有使用通用方法来模拟请求或模拟浏览器,而是直接使用浏览器来处理采集数据。当然,必须根据实际情况选择使用哪种方法。

  完整脚本:geek.js

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线