使用jQuery / cheerio访问脚本标记中的变量

时间:2017-10-23 23:36:31

标签: javascript jquery node.js cheerio

我使用node.js + cheerio进行网页抓取。

在请求网站后,我得到了类似的内容。

<html>
    <head>
        ...
    </head>
    <body>
        <script>
           var x = {name: "Jeff"};
           var y = 4;
        </script>
    </body>
</html>  

如何通过cheerio / jQuery访问变量值?

1 个答案:

答案 0 :(得分:7)

您可以将<script>标记内容作为文本获取,通过regexp查找变量:

const cheerio = require('cheerio');
const $ = cheerio.load(html); // your html

const text = $('script')[0].text(); // TODO there might be multiple script tags

// find variable `x` in the text
const matchX = text.match(/var x = (.*);/);
console.log(matchX[1]); // prints "{name: "Jeff"}"

// find variable `y` in the text
const matchY = text.match(/var y = (.*);/);
console.log(matchY[1]); // prints "4"

您可以获得这样的字符串值。然后它取决于你想要做什么,如果你需要这些对象值,你可以使用eval(但要注意使用eval可能是危险的),或者你可以通过regexp再次解析它或某事(你可能知道你在寻找什么价值观)。