我正在尝试在转会市场网站上抓取数据,但它给了我我发布的错误。
我正在使用 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
这一行是错误:
const nomeArtilheiro = $(`${AllElements[1]} > table > tbody > tr.hauptlink > a`).text();
AllElements[1]
不是字符串,所以它可能会变成 "[object Object]"
你应该写
$(AllElements[1]).find('table > tbody > tr.hauptlink > a').text()
我在使用单引号封装撇号时遇到了同样的错误。
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);