Asp.net 使用HTML敏捷包从Javascript中提取lang和lat
我想使用HTML agility pack从以下HTML中提取Long和Lat:Asp.net 使用HTML敏捷包从Javascript中提取lang和lat,asp.net,regex,html-agility-pack,Asp.net,Regex,Html Agility Pack,我想使用HTML agility pack从以下HTML中提取Long和Lat: <script type="text/javascript"> var map = new google.maps.Map($("canvas"), {zoom : 14, mapTypeControl : false, draggable: true, scrollwheel : false, mapTypeId : google.maps.MapTypeId.HYBRID, center : n
<script type="text/javascript">
var map = new google.maps.Map($("canvas"), {zoom : 14, mapTypeControl : false, draggable: true, scrollwheel : false, mapTypeId : google.maps.MapTypeId.HYBRID, center : new google.maps.LatLng(45.4623, -77.5425)});
</script>
var map=new google.maps.map($(“canvas”),{zoom:14,mapTypeControl:false,draggable:true,scrollwheel:false,mapTypeId:google.maps.mapTypeId.HYBRID,中间:new google.maps.LatLng(45.4623,-77.5425)});
也就是说,我需要填充两个独立的变量,一个值为45.4623,另一个值为-77.5425
有人能帮忙吗?我的正则表达式技能也不太好-(HtmlAgilityPack非常适合解析尖括号节点,但它对节点内的JavaScript语法一无所知。最好在“LatLng”([^\]+)\”上运行正则表达式匹配,并提取match.Groups[1].Value。不知道网站,很难判断如何匹配。然而,这可能会奏效
HtmlDocument doc = new HtmlDocument();
//Load your website...
//doc.Load(....
HtmlNode scriptNode = doc.DocumentNode.SelectSingleNode("//script[contains(text(),'google.maps.Map']");
Match match= Regex.Match(scriptNode.InnerText, "\\.LatLng\\((?<Lat>-?[\\d.]+), (?<Lng>-?[\\d.]+)\\)");
string latitude = match.Groups["Lat"].Value;
string longitude = match.Groups["Lng"].Value;
HtmlDocument doc=新的HtmlDocument();
//加载你的网站。。。
//文件加载(。。。。
HtmlNode scriptNode=doc.DocumentNode.SelectSingleNode(//script[contains(text(),'google.maps.Map']);
Match Match=Regex.Match(scriptNode.InnerText,“\\.LatLng\\((?-?[\\d.]+),(?-?[\\d.]+)\\)”;
字符串纬度=match.Groups[“Lat”].值;
字符串经度=match.Groups[“Lng”].值;
仅当您要查找的脚本标记是第一个包含文本的脚本标记时才起作用
google.maps.Map
好的,谢谢,如果上面的脚本标记是页面上的第三个标记,我如何使用agility pack获得它?我假设我随后获得内部文本,然后与正则表达式匹配?这很好,谢谢。我可以解析脚本节点innertext看看它是否包含“google.maps.map”,这就解决了这个问题