【问题标题】:How to get the content of a div tag when scraping with puppeteer and NodeJs使用 puppeteer 和 NodeJs 抓取时如何获取 div 标签的内容
【发布时间】:2021-01-08 02:36:21
【问题描述】:

我听说过这个叫做 puppeteer 的库,它在抓取网页时很有用。所以我决定抓取一个游戏网站的内容,这样我就可以存储它的数据并在以后查看它。

但是在我复制了 div 标签的 XPATH 之后,我希望 puppeteer 抓取它的内容,它返回 Empty string 请问我做错了什么。

这是我试图抓取的网址here

我想抓取显示 6 个不同颜色球的结果的 div 标签。 所以我可以每 45 秒得到这些颜色的数量。

const puppeteer = require("puppeteer");

async function scrapeData(url){
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);

const [dataReceived] = await page.$x('/html/body/div[1]/div/div/div/footer/div[2]/div[1]/div/div[1]/div[2]/div/div');
const elContent = await dataReceived.getProperty('textContent');
const elValue = await elContent.jsonValue();
console.log({elValue});
//console.log(elContent);
//console.log(dataReceived)
browser.close();
}
scrapeData("https://logigames.bet9ja.com/Games/Launcher?gameId=11000&provider=0&sid=&pff=1&skin=201");
console.log("just testing");

【问题讨论】:

    标签: javascript node.js puppeteer


    【解决方案1】:

    您可以使用更简单的选择器,而不是在这里使用page.$x,这将不那么脆弱。尝试page.$('.ball-value')page.waitForSelector('.ball-value') 来处理转换时间。使用更简单的选择器在该页面上进行测试似乎有效。如果您想获取所有球值而不仅仅是第一个值,可以使用page.$$(与document.querySelectorAll, so it would return an array of elements) 相同。

    【讨论】:

    • 坦克为您提供帮助@Zac Anger,我尝试了您提供的所有解决方案,但它们仅适用于该页面上的普通静态 html 元素。使用某种脚本动态创建的元素和属性不起作用。
    • EG:当我做 page.$$('.ball-value');它之所以有效,是因为 .ball-value 类是所选 div 标签之一的硬编码属性。但是当我尝试获取 div 的属性 InnerHtml 时,它返回 '
      ' 而 class="ball ball-green",但每 45 秒动态添加一次绿色。如果尝试获取作为球号的 div 的 textContent 也会发生同样的事情,它将返回空字符串。因为类 ball-green 和文本内容每 45 秒动态添加一次。请问您有其他解决方案吗??
    • 我不确定它是否会起作用,但您可以尝试观察 this questionthis one 中的变化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2015-07-20
    • 2010-09-07
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多