0

我想使用 HTML 敏捷包从以下 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>

即,我需要填充 2 个单独的变量,一个为 45.4623,另一个为 -77.5425

有人可以帮忙吗?我的正则表达式技能也不是很好。:-(

4

2 回答 2

1

在不了解网站的情况下,很难说出如何匹配。但是,这可能会奏效。

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;

仅当您所使用的脚本标签是第一个包含 text 的标签时才有效google.maps.Map

于 2012-04-28T11:23:33.700 回答
0

HtmlAgilityPack 非常适合解析尖括号节点,但它对节点内的 JavaScript 语法一无所知。您最好在“LatLng\(([^\)]+)\)”上运行正则表达式匹配并提取 Match.Groups[1].Value。

于 2012-04-28T09:26:45.383 回答