使用 node-fetch 跳过等待时间

Posted

技术标签:

【中文标题】使用 node-fetch 跳过等待时间【英文标题】:Skip waiting time using node-fetch 【发布时间】:2018-11-19 19:38:46 【问题描述】:

我使用node-fetch 和cheerio 从comic website 中获取数据。我只是使用一个简单的代码来显示正文 html,如下所示:

var fetch = require('node-fetch');
var cheerio = require('cheerio');

var url = 'http://readcomiconline.to';

function getComic() 
    fetch(url)
        .then(res => res.text())
        .then(body => console.log(body));


getComic();

问题是这个页面使用了一个 javascript 代码,客户端需要在 5 秒内等待它重定向到主页,所以在主页加载之前我无法抓取任何东西。

如何跳过这段时间并开始从页面中抓取数据。

谢谢。

【问题讨论】:

加载界面只显示一次 @sorxrob 是的,我知道,但我怎么能跳过呢? 【参考方案1】:

看起来您需要的不仅仅是这两个模块。

您尝试抓取的网站使用 JS 向/cdn-cgi/l/chk_jschl 发送验证并获取 cookie。你可以使用selenium或者反向js。

更多信息在这里:Python web scraping : 503 Response with specific site (how come?)

【讨论】:

【参考方案2】:

你不需要等待5s,因为它会在浏览器中运行。

您有表单#challenge-form,使用cheerio 获取表单的urlmethod 和数据(输入值),并请求它(保存cookie)。

您可以使用devtool(chrome,或类似浏览器中的请求检查形式)。

这是我尝试登录facebook:index.js的项目,它可能对你有帮助。

【讨论】:

以上是关于使用 node-fetch 跳过等待时间的主要内容,如果未能解决你的问题,请参考以下文章

如何用chrome修改js代码,跳过网站等待时间

node-fetch:为啥推荐使用“signal”而不是“timeout”?

如何使用 node-fetch 获取网页?

如何使用 node-fetch 通过 discord webhook 发送图像?

Xamarin 跳过一个等待的方法

使用 node-fetch 时无法调用其类型缺少调用签名的表达式