如何从标签中获取信息使用node.js和library puppeteer?

时间:2018-01-24 23:43:12

标签: javascript html node.js scrape puppeteer

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

该页面标有" div"和许多班级" bma-fly飞行飞行 - 赢得团队2飞行过去": 如何从这个标签获取信息???

我使用代码:

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]

请帮助我。

1 个答案:

答案 0 :(得分:0)

要使用该选择器选择所有节点,您需要dates=str(date.today()) f = open('C:Study\CSV'+dates+'output.txt','a') f.write('\n' + results) f.close

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)

如果要将json对象写入文本文件,则需要将其转换为字符串。这可以使用["asdf", "asdfdsf", ...]完成。

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

JSON.stringify()