javascript - 无法在 Cheerio 中显示选择器内容
问题描述
我正在尝试从网站中提取表格,并希望首先获取所有列。发出请求后,我将 html 加载到cheerio 中,但是当我尝试显示选择器内容时,控制台上什么也没有出现。令我困惑的是,当我直接在页面控制台上尝试相同的选择器时,它可以正常工作并向我显示所有这些选择器。
这是我正在抓取的网址。
这是我用来返回列的cheerio 选择器。我想要的内容在带有“排序”类的标签上。
$('.sorting').each(function (index, element) {
const $element = $(element);
console.log($element.text());
});
这是完整的代码。
const request = require('request');
const cheerio = require('cheerio');
const fundsExplorerUrl = 'https://www.fundsexplorer.com.br/ranking';
request(fundsExplorerUrl,
function (error, response, body) {
if (!error && response.statusCode == 200) {
const $ = cheerio.load(body);
$('.sorting').each(function (index, element) {
const $element = $(element);
console.log($element.text());
});
}
}
);
感谢您的帮助!
解决方案
在原始 HTML 中,没有调用类,sorting
因为 javascript 会动态地将此类添加到 dom 中,因此在这种特定情况下,通过使用以下代码,您可以收集标签标签中th
嵌入的所有标签thead
的内容table
。
const request = require('request-promise');
const cheerio = require('cheerio');
const url = 'https://www.fundsexplorer.com.br/ranking';
async function crawl() {
const rawHtml = await request(url);
const $ = cheerio.load(rawHtml);
$('table thead tr th')
.each( (index, element) => {
console.log($(element).text());
})
}
crawl();
推荐阅读
- python - 用于汽车价格预测的无监督机器学习分类器
- c# - 如何在 .NET DI 中注入具有类型约束的类?
- angularjs - 如何在离开之前检查旧的 $scope?
- java - 无法解析 showAddDialog 中的符号
- visual-studio - 将 Visual Studio Online 项目下载到不同 PC 时处理丢失 DLL 的正确方法
- python - 如何在 sqlite3 中存储列表(使用数据创建图表)?
- javascript - 当元素未定义时,Javascript if 语句不输出我想要的值
- video - 在整页js滚动上向前和向后播放视频
- node.js - GraphQL 关系
- java - 从终端 ClassNotFoundException 手动编译 Java