Javascript ChereIO在脚本标记中查找文本

Javascript ChereIO在脚本标记中查找文本,javascript,node.js,cheerio,Javascript,Node.js,Cheerio,我想在脚本标签中提取js脚本 此脚本标记为: <script> $(document).ready(function(){ $("#div1").click(function(){ $("#divcontent").load("ajax.content.php?p=0&cat=1"); }); $("#div2").click(function(){ $("#divcontent").load("ajax.content

我想在脚本标签中提取js脚本

此脚本标记为:

<script>
  $(document).ready(function(){

    $("#div1").click(function(){
      $("#divcontent").load("ajax.content.php?p=0&cat=1");
    });

    $("#div2").click(function(){
      $("#divcontent").load("ajax.content.php?p=1&cat=1");
    });

  });
</script>

它将返回ajax.content.php?p=0&cat=1

,使用Cheerio,很容易获得脚本标记的文本:

如果你是新的正则表达式:这个表达式包含两个捕获组,第一个是DIV ID,第二个是链接文本,中间是非捕获组,它只存在确保ReGEX通过断线继续。我说它是松散的,因为它正在寻找的匹配看起来是这样的:

$***。单击***忽略字符***。加载***
因此,根据javascript的数量和相似程度,您可能必须将其收紧以避免误报。

使用Cheerio,很容易获得脚本标记的文本:

如果你是新的正则表达式:这个表达式包含两个捕获组,第一个是DIV ID,第二个是链接文本,中间是非捕获组,它只存在确保ReGEX通过断线继续。我说它是松散的,因为它正在寻找的匹配看起来是这样的:

$***。单击***忽略字符***。加载***
因此,根据javascript的数量和相似程度,您可能需要将其收紧以避免误报。

如果您使用的是较新版本的cheerio 1.0.0-rc.2,则需要使用.html而不是.text

const cheerio=需要“cheerio”; const$=cheerio.load'script one script two'; //对于第一个脚本标记 log$'script'.html; //对于所有脚本标记 console.log$'script'.mapidx,el=>$el.html.toArray;
如果您使用的是更新版本的cheerio 1.0.0-rc.2,则需要使用.html而不是.text

const cheerio=需要“cheerio”; const$=cheerio.load'script one script two'; //对于第一个脚本标记 log$'script'.html; //对于所有脚本标记 console.log$'script'.mapidx,el=>$el.html.toArray;
不管你想做什么,这似乎是错误的做法。无论PHP文件如何生成这些内联代码,您都应该以与PHP源代码相同的方式获取链接,而不是通过解析内联JavaScript源代码来获取事件处理程序中的硬编码字符串值。无论您试图做什么,这似乎都是错误的做法。无论PHP文件如何生成此内联代码,您都应该以与PHP源代码相同的方式获取链接,而不是通过解析内联JavaScript源代码来获取事件处理程序中的硬编码字符串值。您能帮我提取正则表达式吗?我将在答案中添加一个示例正则表达式!你能帮我提取正则表达式吗?我将在答案中添加一个正则表达式示例!
getUrlOf('div1');
const cheerio = require('cheerio');
const $ = cheerio.load("the HTML the webpage you are scraping");

// If there's only one <script>
console.log($('script').text());

// If there's multiple scripts
$('script').each((idx, elem) => console.log(elem.text()));
let html = "incoming html";
let regex = /\$\("(#.+?)"\)\.click(?:.|\n)+?\.load\("(.+?)"/;
let match;

while (match = regex.exec(html)) {
    console.log(match[1] + ': ' + match[2]);
}