最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

在完成所有脚本和页面加载后如何获取所有html数据? (木偶)

运维笔记admin8浏览0评论

在完成所有脚本和页面加载后如何获取所有html数据? (木偶)

在完成所有脚本和页面加载后如何获取所有html数据? (木偶)

最后,我弄清楚了如何使用Node.js。安装了所有库/扩展。因此puppeteer可以正常工作,但是像以前使用Xmlhttp一样...它仅获取页面的模板/正文,而无需任何信息。页面上的所有脚本都会在浏览器(Web应用程序?)中打开几秒钟后激活。加载整页后,我需要在某些标签内获取信息。另外,我会问,是否有可能使用纯JavaScript,因为我没有使用类似jQuery的代码。所以对我来说难度加倍...

这里是我到目前为止所拥有的。

const puppeteer = require('puppeteer');
const $ = require('cheerio');
let browser;
let page;

const url = "really long link with latitude and attitude";

(async () => puppeteer
  .launch()
  .then(await function(browser) {
    return browser.newPage();
})
  .then(await function(page) {
    return page.goto(url).then(function() {
      return page.content();
    });
  })
  .then(await function(html) {
    $('strong', html).each(function() {
      console.log($(this).text());
    });
  })
  .catch(function(err) {
    //handle error
  }))();

我只在强标签内获得模板默认主体元素。但是它应该包含的数据远远超过10个项目。

回答如下:

一些注意事项:

  1. 您不需要cheeriopuppeteer,也不需要重新解析page.content():您已经具有运行所有脚本的完整DOM,并且可以在window上下文中评估任何代码,例如在浏览器中使用[ C0],并在Web API上下文和Node.js API上下文之间传输可序列化的数据。

  2. 仅尝试使用异步/等待,这将简化您的代码和流程。

  3. 如果需要等到所有脚本和其他依赖项加载完毕,请在page.evaluate()中使用page.evaluate()

  4. 如果您怀疑文档脚本需要一些时间才能达到所需的状态,请使用waitUntil: 'networkidle0'等各种测试功能,或者使用page.goto()的功能。

这里是一个简单的脚本,可在页面中输出所有标签名称。

page.goto()

您可以更详细地指定任务,我们可以尝试编写更合适的内容。


www.bezrealitky.cz的脚本(下面注释中的任务):

page.waitForSelector()
发布评论

评论列表(0)

  1. 暂无评论