我正在建立一个交易搜索引擎,我将所有交易都放在地图上,所以我需要抓取来自网站的坐标。
因此,坐标可以是scrit,tag,image,link等。
是否有任何工具或任何脚本,框架可以帮助我快速从某些网站获取坐标?怎么做?用PHP,XPath,regex,node,css选择器???一些快速的“获取坐标”脚本。
是否有任何解决方案,手动操作是如此困难,因为我需要在更多的10,000个网站和所有网站坐标上做疤痕是脚本标记,图像或链接......
任何自动化解决方案?
以下是一些案例:
<a href="http://maps.google.com/maps?q=44.796637,20.480168" target="_blank">prikaži na karti</a>
<iframe frameborder="0" border="0" scrolling="no" marginwidth="0" marginheight="0" title="" src="http://www.kolektiva.rs/beograd/dailydeal/vendor/map/center/44.815123,20.469887/"></iframe>
<iframe frameborder="0" height="230" marginheight="0" marginwidth="0" scrolling="no" src="http://maps.google.com/maps/ms?ie=UTF8&hl=el&msa=0&msid=207271638222613154872.00049df7bb569d7af0057&ll=38.775499,23.483276&spn=0.984971,1.257935&z=8&output=embed" width="230"></iframe>
你可以添加你的案例,因为每个网站都有不同类型的地图......
因此,不仅从这个例子中提取坐标的通用代码 - 对于每个文本???
答案 0 :(得分:1)
嗯,我认为你有一个减号,你似乎在寻找某种魔法......或者你不清楚也不够准确......
也许你应该尝试将你的问题分成几个孤立的确定问题,因为一种通用的地理位置协调网络收集器似乎是一个非常具体的应用......也许它存在,我不喜欢不知道,但......现在听起来像是一种魔法: - )
所以也许试着对你可能面临的每个案例做一个清晰明确的清单,并可能开始尝试考虑每个案例的可能的提取解决方案......
已经说过,首先,你确定IP到GPS的坐标还不够吗?如果您的每笔交易都有一个URL,那么它就足够了。在这种情况下,您可能希望查看at here,每月更新免费数据库,但它应该足够准确。他们为lot of dev environments提供API,您可以自由地尝试他们的服务at this address(每天最多25次请求)
以下是使用tutorial数据库和PHP上geolitecity的快速quova
我认为PHP也有一个GeoIP模块,但我不知道它是使用maxmind服务还是其他服务,而且我无法访问PHP网站,它现在似乎已经失效了。稍后尝试this,
编辑:您需要说明您的交易会有哪些来源。是在像ebay或亚马逊这样的大企业网站上,还是类似的?如果是,您可能首先要检查他们是否有适当的API,您可以从中轻松检索每笔交易的GPS坐标...
修改#2:强>
好的,所以从您的示例中看来,您的所有地理位置情况似乎都是23.987463,12.098374
形式,比如说两个介于一个和三个数字之间,前面加上'减'或者没有,后跟一个点,然后是6位数,然后是逗号,然后两个介于一个和三个数字之间,前面加上'减号',然后再加上一个点和六个数字......所以,正则表达式为匹配这种格式将是:
'-?[0-9]{1,3}.[0-9]{6},-?[0-9]{1,3}.[0-9]{6}'
现在,在PHP中,您应该执行以下操作:
preg_match_all('-?[0-9]{1,3}.[0-9]{6},-?[0-9]{1,3}.[0-9]{6}',$s,$out);
您的输入字符串位于$s
,您可以在$out
中获得包含3个GPS坐标的数组。
$ out中的数组看起来像:
Array
(
[0] => Array
(
[0] => 44.796637,20.480168
[1] => 44.815123,20.469887
[2] => 38.775499,23.483276
)
现在,我不是一个PHP人,我不能在我的机器上尝试任何代码,所以我建议你做一些尝试,如果需要的话,就你可能遇到的新问题提出更清晰明确的新问题...
答案 1 :(得分:0)
(preg_match_all(&#39;#(([0-9 - ] +){1,3}。([0-9] +))#是&#39;,$ string,$ matches))< / p>
工作!!!!
答案 2 :(得分:0)
没有规则坐标有6位小数精度。我通常看到4到10之间,但实际上它可以是任何数字。最大值是180,所以也许'-?1?\d{1,2}\.\d{4,10}'