Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 使用HTML敏捷包从Javascript中提取lang和lat_Asp.net_Regex_Html Agility Pack - Fatal编程技术网

Asp.net 使用HTML敏捷包从Javascript中提取lang和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

我想使用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 : 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”,这就解决了这个问题