如何使用 jquery 从 Javascript 中提取特定数据字段?
how to extract specific data field from Javascript using jquery?
我不确定这个问题是否已经被问过,我是 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>
我需要使用 jquery 从 exhibitors
获取字段:total
和 domestic
。我尝试了这个查询 (JSON.parse($('.js-react-on-rails-component').text())).exhibitors.total.text().trim()
但它没有 return 任何东西。所以,我尝试创建一个变量并在结果上调用它,如下所示:
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;
}
}
但是,此代码也没有 return 任何结果。
既然你习惯了
(JSON.parse($('.js-react-on-rails-component').text())).exhibitors.total.text().trim()
如果你仔细观察json json的参展商属性是一个数组,你必须使用exhibitors[i].total 和 exhibitors[i].domestic 其中 i = 0...N;
而不是你使用 exhibitors.total 和 exhibitors.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>
我不确定这个问题是否已经被问过,我是 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>
我需要使用 jquery 从 exhibitors
获取字段:total
和 domestic
。我尝试了这个查询 (JSON.parse($('.js-react-on-rails-component').text())).exhibitors.total.text().trim()
但它没有 return 任何东西。所以,我尝试创建一个变量并在结果上调用它,如下所示:
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;
}
}
但是,此代码也没有 return 任何结果。
既然你习惯了
(JSON.parse($('.js-react-on-rails-component').text())).exhibitors.total.text().trim()
如果你仔细观察json json的参展商属性是一个数组,你必须使用exhibitors[i].total 和 exhibitors[i].domestic 其中 i = 0...N; 而不是你使用 exhibitors.total 和 exhibitors.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>