使用 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 获取表单的url
、method
和数据(输入值),并请求它(保存cookie)。
您可以使用devtool
(chrome,或类似浏览器中的请求检查形式)。
这是我尝试登录facebook
:index.js的项目,它可能对你有帮助。
【讨论】:
以上是关于使用 node-fetch 跳过等待时间的主要内容,如果未能解决你的问题,请参考以下文章
node-fetch:为啥推荐使用“signal”而不是“timeout”?