gpt4 book ai didi

javascript - NodeJS 和 Cheerio 网络抓取

转载 作者:搜寻专家 更新时间:2023-11-01 00:40:54 26 4
gpt4 key购买 nike

我做了一个应用程序,我在其中抓取了一个页面,在那个页面上我有一个这样的脚本

<script>
var myData = { Time: '10:46:29 am', car1: 'Volvo', car2: 'Ferarri', car3: 'VW' };
<script>

使用 cheeriorequest Node 模块,我得到了脚本,但我需要获取 car1car2< 的值car3

request('http://my-url.com', function(error, response, body) {

var $ = cheerio.load(body);

var htmlData = $('body script').last().prev().html();
console.log(data);

});

我尝试使用 JSON.parse(htmlData) 但我收到以下错误 SyntaxError: Unexpected token T

有什么方法可以从脚本中解析 javascript,或者有人可以向我解释如何通过正则表达式获取 car1car2 的值吗?

最佳答案

我建议进行一系列字符串替换,然后执行 JSON.load,以获取 JavaScript 对象,如下所示

var data = "{ Time: '10:46:29 am', car1: 'Volvo', car2: 'Ferarri', car3: 'VW' };";
var obj = JSON.parse(data
.replace(/((?:[A-Za-z_][\w\d])+):/g, '"$1":')
.replace(/'/g, '"')
.replace(/;\s*$/, ''));
console.log(obj.car1, obj.car2, obj.car3);
// Volvo Ferarri VW

在这里,

.replace(/((?:[A-Za-z_][\w\d])+):/g, '"$1":')

将用 ",然后是 :,以及 "$1":

然后

.replace(/'/g, '"')

会将所有 ' 替换为 "(假设您的数据中没有 ')。

然后

.replace(/;\s*$/, '')

将用空字符串替换 ; 后跟空白字符(基本上我们删除它们)。

此时,字符串会变成这样

{ "Time": "Friday", "car1": "Volvo", "car2": "Ferarri", "car3": "VW" }

现在我们简单地将它解析为 JSON 字符串,使用 JSON.parse 来获取 JavaScript 对象。

关于javascript - NodeJS 和 Cheerio 网络抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34814612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com