javascript - 如何使用 jquery 从 Javascript 中提取特定数据字段?
问题描述
我不确定这个问题是否已经被问过,而且我是 jquery 和 javascript 的新手。但是,我找不到与我的问题相关的任何答案。我正在尝试创建一个apify爬虫。我需要从以下 javascript 中提取特定数据
<script type="application/json" class="js-react-on-rails-component">
{
"assetHost": null,
"version": "0.0.4-855-gda76bc6\n",
"availableLocales": [
"de",
"en"
],
.........
"stats": {
"visitors": [
{
"domestic": 600,
"note": "incl. 250 conference participants",
"year": 2017,
"total": 600,
"structure": null,
"latest": true
}
],
"venue": [
{
"total": 376,
"domestic": 376,
"latest": true,
"year": 2017
}
],
"exhibitors": [
{
"total_indirect": 0,
"total": 46,
"domestic": 46,
"latest": true,
"year": 2017
}
]
},
..........
</script>
我需要获取字段:total
并domestic
使用exhibitors
jquery。我试过这个查询(JSON.parse($('.js-react-on-rails-component').text())).exhibitors.total.text().trim()
但它没有返回任何东西。因此,我尝试创建一个变量并在结果上调用它,如下所示:
function pageFunction(context) {
var $ = context.jQuery;
var exhibitor = JSON.parse($('.js-react-on-rails-component').text());
var total = exhibitor.exhibitors.total;
var domestic = exhibitor.exhibitors.domestic;
if (context.request.label === "START") {
.....
} else {
var result = {
total: total,
domestic: domestic
};
return result;
}
}
但是,这段代码也没有返回任何结果。
解决方案
既然你习惯了
(JSON.parse($('.js-react-on-rails-component').text())).exhibitors.total.text().trim()
如果您仔细查看json,则json的existors属性是一个数组,您必须使用existors[i].total和existors [i].domestic where i = 0...N; 而不是你正在使用existors.total 和existors.domestic
首先,为简单起见,请将您的 dom 组件放入一个变量中,
var myJson = JSON.parse($('.js-react-on-rails-component').text());
var total = myJson.stats.exhibitors[i].total;
var domestic = myJson.stats.exhibitors[i].domestic;
其中 i = 0...N;
编辑:
请看下面的例子
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div></div>
<script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>
<script type="application/json" id="myjsonscript">
{
"stats": {
"visitors": [
{
"domestic": 600,
"note": "incl. 250 conference participants",
"year": 2017,
"total": 600,
"structure": null,
"latest": true
}
],
"venue": [
{
"total": 376,
"domestic": 376,
"latest": true,
"year": 2017
}
],
"exhibitors": [
{
"total_indirect": 0,
"total": 46,
"domestic": 46,
"latest": true,
"year": 2017
}
]
}
}
</script>
<script id='script' type='text/javascript'>
var myJson = JSON.parse($('#myjsonscript').text());
$('div').html(myJson);
var total = myJson.stats.exhibitors[0].total;
var domestic = myJson.stats.exhibitors[0].domestic;
alert('total:' + total);
alert('domestic: ' + domestic);
</script>
</body>
</html>
推荐阅读
- scala - IntelliJ IDEA 在升级到 2019.3.3 后停止为 Scala 项目提供 Run... 命令
- javascript - 过滤掉日期返回空白数组
- r - 收敛问题 glmer:如何解释 allFit 结果并比较具有不同优化器的模型
- javascript - 开始使用 amMaps
- java - 如何从另一个类访问 DefaultTableModel
- c++ - 默认从索引构造 std::variant
- handwriting-recognition - 手写文本识别中的变音符号识别
- reactjs - Fetch 似乎在 React 中的客户端上执行
- json - 尝试解析 json 时位置 0 处的意外字符 (g) - HttpResponseDecorator
- matplotlib - 在 Jupyter 笔记本中调试交互式 matplotlib 图形