我想使用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
有人可以帮忙吗?我的正则表达能力也不是很好。 : - (
答案 0 :(得分: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;
仅在您使用的脚本标记是包含文本google.maps.Map
的第一个标记时才有效。
答案 1 :(得分:0)
HtmlAgilityPack非常适合解析角括号节点,但它对节点内的JavaScript语法一无所知。你最好在“LatLng \(([^ \]] +)\)”上运行正则表达式匹配并提取Match.Groups [1] .Value。