gpt4 book ai didi

javascript - 不使用 eval() 评估字符串

转载 作者:行者123 更新时间:2023-11-29 18:40:15 25 4
gpt4 key购买 nike

我正在创建一个“通用”网络抓取工具,它将抓取 任何具有条目列表的页面。我想从配置中驱动它应该提取的标签。

具有以下配置的示例:

{ 
name : "price",
valueJQueryExpression : ".mt9 > .mt7.b"
},

...我正在解析以下方式:

const $ = require('cheerio');
let jquery = getQuery("price");
let keys = $(jquery);

但是,我有更多棘手的解析器需要处理,例如。那个:

let location = $('.mt9 > .b', html).not('.mt5').not('.mt7').text().trim()

在这种情况下,我想使用 eval() 并在配置中传递完整的表达式。但是,由于安全问题,不建议这样做。

对于以不同方式处理此问题,您有什么建议吗?

最佳答案

您应该能够使用 :not pseudo class这里。尝试以下操作:

$('.mt9 > .b:not(.mt5):not(.mt7)', html).text().trim()

它类似于 jQuery,在 :not() 中指定的选择器将用于从匹配项中排除元素。

您可以在下面看到它的运行情况:

.mt9 > .b:not(.mt5):not(.mt7) {
color: red;
}
<div class="mt9">
<div class="b">This should be red</div>
<div class="b mt7">This should not be red</div>
<div class="b mt5">This should not be red</div>
</div>

关于javascript - 不使用 eval() 评估字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57721449/

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