正则表达式来刮除JavaScript
我正在使用casperjs抓取一个网页,它可以很好地处理全局JavaScript值,但现在我只能从jQuery闭包中取出变量,如下所示:正则表达式来刮除JavaScript,javascript,regex,web-scraping,screen-scraping,Javascript,Regex,Web Scraping,Screen Scraping,我正在使用casperjs抓取一个网页,它可以很好地处理全局JavaScript值,但现在我只能从jQuery闭包中取出变量,如下所示: $(document).ready(function(){ var storeData = { lon: "-5.91829", lat: "54.65583", name: "John Smith" }; SOMEGLOBALVAR.storeFinder.addStore(storeData); }); 我找不到办法弄到朗、拉特和名字 所以我决定选择脚本
$(document).ready(function(){
var storeData = {
lon: "-5.91829",
lat: "54.65583",
name: "John Smith"
};
SOMEGLOBALVAR.storeFinder.addStore(storeData);
});
我找不到办法弄到朗、拉特和名字
所以我决定选择脚本标记,然后使用正则表达式从脚本标记中取出代码。这是我用在线编辑器构建的丑陋的正则表达式:
/var storeData = {\n\t*id.*,\n\t.*(\n\t)*\n\t*.*\n\t*.*\n\t*[a-zA-Z: 0- 9,"]*\n\t*[a-zA-Z: 0-9,"]*\n\t*[a-zA-Z: 0-9,"]*\n\t*\};/g
因此,我的问题分为两部分:
在这里,您可以通过使用带有捕获组的正则表达式(共有3个)来提取这些值: 请注意,我使用
[\s\s]
匹配换行符,因为JavaScript中没有单行选项
var re=/lon:“([^”]*)”[\s\s]*?lat:\s+”([^”]*)“[\s\s]*?name:\s+”([^”]*)*?/;
var str='var storeData={\nlon:“-5.91829”,\nlat:“54.65583”,\nname:“John Smith”\n};
如果((m=re.exec(str))!==null){
document.getElementById(“res”).innerHTML=m[1]+“
”+m[2]+“
”+m[3];
}
在这里,您可以使用带有捕获组的正则表达式提取这些值(共有3个):
请注意,我使用[\s\s]
匹配换行符,因为JavaScript中没有单行选项
var re=/lon:“([^”]*)”[\s\s]*?lat:\s+”([^”]*)“[\s\s]*?name:\s+”([^”]*)*?/;
var str='var storeData={\nlon:“-5.91829”,\nlat:“54.65583”,\nname:“John Smith”\n};
如果((m=re.exec(str))!==null){
document.getElementById(“res”).innerHTML=m[1]+“
”+m[2]+“
”+m[3];
}
在这里,您可以使用带有捕获组的正则表达式提取这些值(共有3个):
请注意,我使用[\s\s]
匹配换行符,因为JavaScript中没有单行选项
var re=/lon:“([^”]*)”[\s\s]*?lat:\s+”([^”]*)“[\s\s]*?name:\s+”([^”]*)*?/;
var str='var storeData={\nlon:“-5.91829”,\nlat:“54.65583”,\nname:“John Smith”\n};
如果((m=re.exec(str))!==null){
document.getElementById(“res”).innerHTML=m[1]+“
”+m[2]+“
”+m[3];
}
在这里,您可以使用带有捕获组的正则表达式提取这些值(共有3个):
请注意,我使用[\s\s]
匹配换行符,因为JavaScript中没有单行选项
var re=/lon:“([^”]*)”[\s\s]*?lat:\s+”([^”]*)“[\s\s]*?name:\s+”([^”]*)*?/;
var str='var storeData={\nlon:“-5.91829”,\nlat:“54.65583”,\nname:“John Smith”\n};
如果((m=re.exec(str))!==null){
document.getElementById(“res”).innerHTML=m[1]+“
”+m[2]+“
”+m[3];
}
lon: "([^"]*)"[\s\S]*?lat:\s+"([^"]*)"[\s\S]*?name:\s+"([^"]*)".*?