gpt4 book ai didi

javascript - 网页抓取,我无法选择我想要的标签

转载 作者:太空宇宙 更新时间:2023-11-03 23:49:18 26 4
gpt4 key购买 nike

我试图做一些网页抓取,但发现了一个问题,我有这个 JS 脚本:

const request = require('request');
const cheerio = require('cheerio');
const url = 'https://www.sisal.it/scommesse-matchpoint?filtro=0&schede=man:1:21' // this is an
italian betting site

request( url, (error, response, html) => {
if (!error && response.statusCode == 200) {
const $ = cheerio.load(html);

let squadre = $("div");
console.log(squadre.text())
}
})

这会返回一个非常长的字符串,其中包含网站的所有 div 文本,但在该字符串中没有我想要的文本。我制作了这个脚本,因为做了之后:

const $("div.*class*")

即使选择器正确,它也没有返回任何内容,您对为什么我无法选择我想要的 div 有什么想法吗?

最佳答案

此页面是动态创建的,这意味着,如果您使用 Cheerio 发出请求,您将获得 SPA 的样板代码,以及稍后需要上传的数据。
要抓取此类网站,您需要比cheerio更高级的东西。
易于使用的选项 - puppeteer
代码看起来像这样:

(async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();

// Use here waitUntil to wait until additional requests would be made and the page would be fully loaded.
await page.goto('https://www.sisal.it/scommesse-matchpoint?filtro=0&schede=man:1:21', {waitUntil: 'networkidle2'});

const data = await page.evaluate(() => {
// Make here all your JS actions and return JSON.stringify data.
// You can access DOM with document.querySelector
// and other JS methods for DOM manipulation
return JSON.stringify({})
});

await browser.close()
})()

只需使用 puppeteer API 并找到处理此任务的方法即可。

关于javascript - 网页抓取,我无法选择我想要的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59957288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com