javascript - 如何使用 Cheerio 将抓取的数据转换为 JSON 对象
问题描述
这是我的代码:
let request = require('request');
let cheerio = require('cheerio');
let url = "https://www1.nseindia.com/marketinfo/companyTracker/compInfo.jsp?symbol=INFY&series=EQ"
request(url, function(error, response, html){
if (!error && response.statusCode == 200) {
let $ = cheerio.load(html);
tabCon = $('td').text(),
console.log(tabCon);
}
})
我在控制台上得到这样的输出:
Infosys Limited 上市日期 (NSE) : 08-Feb-1995 面值 : 5.00ISIN : INE009A01021行业 : 计算机 - 软件 成分指数 : ,NIFTY 500,NIFTY IT,NIFTY 50,NIFTY 100,NIFTY 200,NIFTY SERVICES SECTORIssued Cap. : 4258456678(股)截至 2019 年 11 月 25 日自由流通市值。: 253866.09(Cr) 影响成本: 0.01 截至 201952 年 11 月当周高/低价格: 847.00/599.85 自由流通市值截至前一个交易日。
我想将此数据放入此结构中的 JSON(而不是文件)中:
{
"Date of Listing (NSE)": "08-Feb-1995",
"Face Value": "5.00",
"ISIN": "INE009A01021".......and so on
}
解决方案
您可以使用该.filter()
方法排除所有td
没有:
(键值对指示符)的元素,然后初始化对象变量,遍历结果元素以构建对象,如下所示:
....
request(url, function(error, response, html){
if (!error && response.statusCode == 200) {
let $ = cheerio.load(html);
let tabCon = {};
$('td').filter(function() {
return $(this).text().indexOf(':') > -1;
}).each(function() {
let kvPair = $(this).text().split(':');
tabCon[kvPair[0].trim()] = kvPair[1].trim();
});
console.log(tabCon);
}
});
推荐阅读
- json - Spring Boot 映射 JSON 以在正在创建的新对象中设置引用对象
- shopify - 在 Shopify 商店中添加谷歌自定义搜索代码的问题
- sql - 如何在 SQL 中连接两个表?
- gstreamer - gstreamer 警告:错误的管道
- html - 导航栏中的样式品牌和文本
- sql - 与自身交叉连接一个表 Impala SQL Cloudera
- r - 在 Filezilla 中运行 R 脚本
- c# - 使用 Clipboard.SetData() 放入剪贴板的内容的第一个字节和最后一个字节是什么意思?
- unity3d - Unity 停止角色控制器跳上山
- java - 实现双击图像