【问题标题】:How get information from tag use node.js and library puppeteer? [duplicate]如何从标签使用 node.js 和库 puppeteer 获取信息? [复制]
【发布时间】:2018-01-24 23:43:11
【问题描述】:

页面来源与浏览器中的页面不同。因此我需要使用 puppeteer 库或 jsdom 库。

页面有标签“div”和许多类“bma-fly flying-won-team2 fly-past”: 如何从这个标签中获取信息???

我使用代码:

const puppeteer = require('puppeteer');
var fs = require('fs');

var link = "www. la la la . com";

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto(link);
  const text2 = await page.evaluate(() => document.querySelector('.bma-fly.flying.flying-won-team2.flying-past').innerHTML);
  console.log(text2);
  fs.writeFileSync("a08.txt" , text2);
  browser.close();
})();

如果我使用:

const text1 = await page.evaluate(() => document.querySelector("div.bma-fly.flying.flying-won-team2.flying-past").innerHTML);

我仅在第一次找到此元素时才获得信息。 如何获取这个标签和这个类的其他信息?

如果不使用 innerHTML ,我会在控制台中得到:{}。 (我使用 Linux)。

如果我保存使用 fs.writeFileSync("a07.txt" , text1); ,我会得到 [object Object]

如果我使用.childNodes 我会得到

{ '0': {}, '1': {}, '2': {}, '3': {}, '4': {}, '5': {}, '6': {} }

在控制台中。 如果我保存这个,我会得到:[object Object]

请帮帮我。

【问题讨论】:

    标签: javascript html node.js scrape puppeteer


    【解决方案1】:

    要使用该选择器选择所有节点,您需要document.querySelectorAll()

    // get html element refs to 
    var els = document.querySelectorAll('div.bma-fly.flying.flying-won-team2.flying-past')
    
    // convert nodelist to array, then map the innerHTML property
    var htmls = Array.prototype.slice.apply(els).map(el => el.innerHTML)
    

    这将为您提供一个包含所有选择器值的数组。

    ["asdf", "asdfdsf", ...]

    如果你正在将 json 对象写入文本文件,则需要将其转换为字符串。这可以通过JSON.stringify() 完成。

    在你的情况下,它看起来像这样:

    fs.writeFileSync("a07.txt" , JSON.stringify(text1))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-22
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      相关资源
      最近更新 更多