2017-10-23 3 views
0

私はnode.js + cheerioをWebスクレイピングに使用しています。jQuery/cheerioでスクリプトタグの変数にアクセスする

ウェブサイトをリクエストした後、私はこのようなことをします。

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

cheerio/jQueryを使用して変数値にアクセスするにはどうすればよいですか?

答えて

3

あなたは正規表現を経由して、変数を見つけるテキストとして<script>タグの内容を得ることができます:あなたはこのような文字列値を取得することができます

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などで再度解析することができます。あなたが探している)。

関連する問題