-1

私は取引の検索エンジンを構築していて、すべての取引を地図に載せているので、ウェブサイトからのスクレイピングによる座標が必要です。

したがって、座標は、scrit、tag、image、linkなどになります。

いくつかのWebサイトから座標をすばやく取得するのに役立つツールまたはスクリプト、フレームワークはありますか?どうやってするか?PHP、XPath、正規表現、ノード、cssセレクターを使用しますか?いくつかの簡単な「座標の取得」スクリプト。

これに対する解決策はありますか?10,000を超えるWebサイトでスクレイピングを行う必要があり、すべてのサイトの座標がスクリプトタグ、画像、またはリンクにあるため、手動で行うのは非常に困難です...

自動化されたソリューションはありますか?

ここにいくつかのケースがあります:

 <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&amp;hl=el&amp;msa=0&amp;msid=207271638222613154872.00049df7bb569d7af0057&amp;ll=38.775499,23.483276&amp;spn=0.984971,1.257935&amp;z=8&amp;output=embed" width="230"></iframe>

あなたはあなたのケースを追加することができます、なぜならすべてのサイトは異なるタイプの地図だからです...

したがって、この例からだけでなく、すべてのテキストに対して座標を抽出するためのユニバーサルコードはありますか?

4

3 に答える 3

1

うーん、何らかの魔法を探しているように見えるマイナスの原因があると思います...または、明確で正確ではない可能性があります...

おそらく、あなたの問題をいくつかの孤立した明確な問題に分けてみるべきです.一種のユニバーサルジオロケーション座標ウェブハーベスターは、非常に特殊なアプリケーションのように見えるからです..多分それは存在します.私にはわかりません.今のところ魔法の:-)

したがって、直面する可能性のある各ケースの明確で明確な目録を作成するようにしてください。また、各ケースで可能な抽出ソリューションについて考え始めることもできます...

そうは言っても、まず第一に、GPS 座標への IP では十分ではありませんか? 取引ごとに URL があれば、それで十分かもしれません。無料のデータベースは毎月更新されますが、十分に正確なはずです彼らは多くの開発環境にAPI を提供しており、このアドレスでサービスを自由に試すことができます(1 日最大 25 リクエスト)。

これは、 PHPでgeolitecityデータベースとquovaを操作するための簡単なチュートリアルです。

PHPにもGeoIPモジュールがあると思いますが、それがmaxmindサービスを使用しているのか、それとも別のサービスを使用しているのかわかりません.PHP Webサイトにアクセスできません.今のところダウンしているようです. 後でこれを試してみてください。

編集:取引のソースの種類を指定する必要があります。それは ebay や amazon などの大企業の Web サイトにありますか? はいの場合は、最初に、各取引の GPS 座標を簡単に取得できる適切な API があるかどうかを確認することをお勧めします ...

編集#2: あなたのサンプルから、すべての地理位置情報のケースはフォーム23.987463,12.098374にあるようです。21 ~ 3 桁の数字の前に「マイナス」を付けるかどうか、その後にドット、次に 6 桁、次にコンマ、2「マイナス」が先行するかどうかにかかわらず、1 桁から 3 桁の間で、その後にドットと 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あり、3 つの GPS 座標を含む配列は にあります$out

$out の配列は次のようになります。

Array
(
[0] => Array
(
[0] => 44.796637,20.480168
[1] => 44.815123,20.469887
[2] => 38.775499,23.483276
)

さて、私は PHP の専門家ではなく、自分のマシンでコードを試すことができないので、いくつか試してみることをお勧めします。また、必要に応じて、遭遇する可能性のある新しい問題について、より明確で明確な新しい質問をすることをお勧めします ...

于 2012-06-09T11:37:19.037 に答える
0

座標の精度が小数点以下 6 桁であるという規則はありません。通常は 4 ~ 10 の間で表示されますが、実際には任意の数になる可能性があります。最大は180だから多分'-?1?\d{1,2}\.\d{4,10}'

于 2012-06-10T00:53:16.567 に答える
0

(preg_match_all('#(([0-9-]+){1,3}.([0-9]+))#is', $string, $matches))

仕事!!!!

http://ideone.com/X5qNh

于 2012-06-09T17:14:23.327 に答える