我正在做一个个人项目,我想从网站上抓取一些游戏排名,但无法在HTML中找到我要抓取的游戏的标题。
const request = require('request');
const cheerio = require('cheerio');
request('https://newzoo.com/insights/rankings/top-20-core-pc-games/', (error, response, html) => {
if (!error && response.statusCode == 200) {
const $ = cheerio.load(html);
//var table = $('#ranking');
//console.log(table.text());
$('.ranking-row').each((i,el) => {
const title = $(el).find('td').find('td:nth-child(1)').text();
console.log(title);
});
}
});
答案 0 :(得分:0)
更改
const title = $(el).find('td').find('td:nth-child(1)').text();
到
const title = $(el).find('td:nth-child(2)').text();
PS::要调试xpath,请使用chrome调试器。如果您转到该特定站点并搜索.ranking-row td td:nth-child(1)
,将看不到任何返回值。但是,如果您执行.ranking-row td:nth-child(2)
,则将获得期望的结果。
这是一个简单的xpath错误,是由于两次查找相同的td
并在nth-child
中使用错误的索引引起的。