页面源与浏览器中的页面不同。因此我需要使用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]
。
请帮助我。
答案 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()