javascript - 使用 Puppeteer 单击后检测 POST 响应到达

标签 javascript node.js web-scraping puppeteer

我正在尝试从表格中获取信息,但该表格有一个分页按钮(“下一个,上一个”)。当我点击下一步按钮时,没有导航发生;它只是创建一个返回新 HTML 表格的 POST 请求。

当我单击导致 POST(不是导航)的下一个按钮时,我如何才能等待此 POST 完成,然后再尝试从下一页再次捕获数据?

也许我可以检测到表格元素中的一些变化,但我不知道如何做。

解决这个问题的最佳方法是什么?

现在我正在这样做:

while (await page.$(NEXT_BUTTON_SELECTOR) !== null) {
  await page.click(NEXT_BUTTON_SELECTOR);
  await page.waitFor(2 * 1000);
  pageTableArray = getData();
}

但我不认为这是一个好方法。

最佳答案

如果 await page.click(NEXT_BUTTON_SELECTOR); 导致页面加载发生,那么脚本中接下来发生的任何事情都会丢失。要解决这个问题,您必须这样做:

page.click(NEXT_BUTTON_SELECTOR); // Notice no `await`
await page.waitForNavigation();

docs page here 查看有关该 API 的更多信息!

关于javascript - 使用 Puppeteer 单击后检测 POST 响应到达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50593232/

相关文章:

javascript - 在表单表中设置隐藏输入值

javascript - 内容更新后,可调整大小将停止在 div 上工作

javascript - 闭包模板中的逻辑运算符

node.js - 范围内回调的最佳实践

python - 请求未通过中间件代理

javascript - 在正确的时间打印消息

node.js - NodeJS : Why do installation instructions always say to use NPM install -g (global)?

web-scraping - 将 url 传递到从 RabbitMQ 使用的 scrapy 中的解析方法

python mechanize 从网站检查考试的日期/时间

node.js - Mongoose .pre ('save' ) 未触发 - bcrypt