javascript - 将 onload 添加到元素而不在 Puppeteer 中执行
问题描述
我正在 Puppeteer 中编写一个网络爬虫。页面准备好后,我必须重写 HTML 并添加onload
一些元素。
然而,Puppeteer 实际执行了该onload
事件。
原始元素:<link rel="stylesheet" href="style.css"/>
在 Puppeteer 中,使用page.evaluate
方法我将以下内容运行到相应的元素:
elem.setAttribute('rel', 'preload');
elem.setAttribute('as', 'style');
elem.setAttribute('onload', "this.rel='stylesheet'");
预期输出:<link rel="preload" as="style" href="style.css" onload="this.rel='stylesheet'" />
实际输出:<link rel="stylesheet" as="style" href="style.css" onload="this.rel='stylesheet'"/>
有没有办法onload
在 Puppeteer 中防止这种情况或以某种方式使其工作?
另一种解决方案是在Cheerio之类的 HTML 解析器中完成这部分工作。
解决方案
打开页面后,立即设置page.setOfflineMode
。这将防止从预加载中加载该样式,从而停止onload
事件!
代码:
await page.goto(url, {
waitUntil: 'networkidle2',
});
await page.setOfflineMode(true);
推荐阅读
- php - 在产品价格总和列旁边显示每周交易
- r - 合并来自不同数据帧的两列,R 中每列随机分配 50%
- python - 根据数据框中的前一列值对列值进行排名
- typescript - 类属性类型通过在打字稿中扩展
- odoo - 将数据传递给odoo 10中的向导时出现KeyError
- javascript - jQuery中基于body的类执行悬停功能
- log4j2 - 缺少自定义配置文件时如何回退到 log4j2.xml
- flutter - 如何解决flutter_cupertino_localizations包编译错误
- javascript - 如何删除一个
- 或选中/取消选中
- 通过单击位于该 li 内的 span 内的相应图标?
- python - 连接键盘 pyGTK