gpt4 book ai didi

javascript - 如何使用 cheerio 生成 javascript 变量的内容(jquery 类似选择器,但没有 dom)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:52:35 24 4
gpt4 key购买 nike

有一个很大的 html 文件,里面有很多 javascript 标签。我试图挖出该变量的内容。变量名称保持不变,但内容会在每次请求时发生变化。

示例文件.html

<script type="text/javascript">//.... more js</script>
<script type="text/javascript">//.... more js</script>
<script type="text/javascript">var foo = {"b":"bar","c":"cat"}</script>
<script type="text/javascript">//.... more js</script>
<script type="text/javascript">//.... more js</script>
<script type="text/javascript">//.... more js</script>

期望的控制台结果

> var result = $('script').<some_selection_thingy>
result = {"b":"bar","c":"cat"}

让我稍微解释一下...我的意思是我的问题是 -a) 如何选择内容为“var foo”的数组对象b) 如何获取 var foo 变量的内容,以便我可以将该信息导入本地 json 变量以进行进一步处理。

当您在控制台中运行 $('script') 时,jquery 返回一个数组。

> $('script')
[<script type="text/javascript">//.... more js</script>,<script type="text/javascript">//.... more js</script>,<script type="text/javascript">var foo = {"b":"bar","c":"cat"}</script>,<script type="text/javascript">...</script>]

因为这是 cheerio 而不是 jquery,dom 没有加载所以我不能只做 $(foo) 。有一个替代方案,我可以使用 jsdom 而不是 cheerio,但我在其他 stackoverflow 响应中读到(在研究这个问题时)它的性能较低,所以我更愿意学习正确的 jquery 选择器,我需要挖出这个变量。

服务器.js

// some cheerio node code
url = 'someurl';
request(url, function(error, response, html){
var $ = cheerio.load(html);
result = $('script').map(&:text).select{ |s| s['var foo'] }
result = result[0]
//SyntaxError: Unexpected token &

这当然是意料之中的,因为 .map(&:text) 是我在使用 xpath 但不适用于 cheerio (jquery) 时会做的。

最佳答案

我明白了!

function findTextAndReturnRemainder(target, variable){
var chopFront = target.substring(target.search(variable)+variable.length,target.length);
var result = chopFront.substring(0,chopFront.search(";"));
return result;
}
var text = $($('script')).text();
var findAndClean = findTextAndReturnRemainder(text,"var foo =");
var result = JSON.parse(findAndClean);

关于javascript - 如何使用 cheerio 生成 javascript 变量的内容(jquery 类似选择器,但没有 dom),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28652080/

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