错误:属性选择器未终止

问题描述 投票:0回答:2

我正在尝试在转会市场网站上抓取数据,但它给了我我发布的错误。

我正在使用 Javascript、Cheerio 和 Axios。

const fetchData = async(url) => {
    const result = await axios.get(url)
    return result.data
}

const main = async () => {
    const content = await fetchData("https://www.transfermarkt.com.br/premier-league/torschuetzenliste/wettbewerb/GB1/saison_id/2022")
    const $ = cheerio.load(content)
    let artilheiros = []

    $('table.items tbody tr').each((i, e) => {
        const AllElements = $(e).find('td')
        const nomeArtilheiro = $(`${AllElements[1]} > table > tbody > tr.hauptlink > a`).text();
        // const clubeArtilheiro
        // const jogos 
        // const gols 
        const data = {nomeArtilheiro}
        artilheiros.push(data)
    })

    console.log(artilheiros)
}

main()

它给出的错误:

throw new Error("Attribute selector didn't terminate");
Error: Attribute selector didn't terminate

javascript axios cheerio
2个回答
1
投票

这一行是错误:

const nomeArtilheiro = $(`${AllElements[1]} > table > tbody > tr.hauptlink > a`).text();

AllElements[1]
不是字符串,所以它可能会变成
"[object Object]"

你应该写

$(AllElements[1]).find('table > tbody > tr.hauptlink > a').text()

0
投票

我在使用单引号封装撇号时遇到了同样的错误。

ex 来自

git diff

-        sc = $(listItem).find(`span[aria-label='Sophie's Choice']`);
+        sc = $(listItem).find(`span[aria-label="Sophie's Choice"]`);

与错误无关,但也许是构建选择查询以查找与上面相同的内容的更好方法

         sc = $(`span[aria-label="Sophie's Choice"]`, listItem);

如文档中所述https://cheerio.js.org/docs/api/interfaces/CheerioAPI

© www.soinside.com 2019 - 2024. All rights reserved.