2017-08-11 9 views
0

私はPythonスクリプトを使用して私の正確な位置を取得したいと思います。 IPの場所に基づいてさまざまなサービスを試しましたが、実際には機能しませんでした(実際の場所から数マイル離れた場所)。HTML5ロケーションツールを使用してPythonで正確なジオロケーションを取得できますか?

私は、Firefox & Google ChromeでHTML5ジオロケーションツールが非常に正確であることに気づいたので、セレンモジュールを使用してウェブブラウザを起動し、これから私の立場をつかむことにしました。

私は2つの問題に直面していますが、まずFirefoxまたはChromeにローカルWebページ上で位置情報サービスを許可することはできません。第二に、私は私の座標を取得するjavascript関数の結果を取得する方法を知りません。ここで

は、私がこれまで何をやったかです:

geo.html

<html> 
    <head> 
     <title>Test</title> 
    <p id="demo"></p> 
     <script type="text/javascript"> 

var x = document.getElementById("demo"); 

function getLocation() { 
    if (navigator.geolocation) { 
     return navigator.geolocation.getCurrentPosition(showPosition); 
    } else { 
     return "Geolocation is not supported by this browser."; 
    } 
} 



function showPosition(position) { 
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
} 
     </script> 
    </head> 
    <body> 
     <p>The element below will receive content</p> 
     <div id="div" /> 
     <script type="text/javascript">getLocation()</script> 
    </body> 
</html> 

test.py

from selenium import webdriver 
from pyvirtualdisplay import Display 

try: 
    display = Display(visible=1, size=(800, 600)) 
    display.start() 
    browser = webdriver.Firefox() 
    browser.get('file:///path/to/geo.html') 
    res = browser.execute_script("getLocation()") 
    print(res) 

except KeyboardInterrupt: 
    browser.quit() 
    display.stop() 

は、あなたがこの問題を解決する方法を知っていますか?

ありがとうございます!

+0

恐らくヘッドレスのChromeがあなたに役立つかもしれません。 https://developers.google.com/web/updates/2017/04/headless-chrome –

+0

あなたがGPSをあなたのコンピュータに接続していない限り、私はそれについて考えていますが、FirefoxとChromeはあなたのIPだけを使うこともできます。多分、彼らのサービスはちょうど良いでしょう。 –

+0

私はそれを調べます、ありがとう! – LeChocdesGitans

答えて

0

コンピュータなどの場所(GPSやグロナスがない場所)は、IPベースです。 あなたはIPベースで地理位置を取得することができますいくつかのサイト

import requests 
import json 

send_url = 'http://freegeoip.net/json' 
r = requests.get(send_url).text 
lat = j['latitude'] 
lon = j['longitude'] 
+0

私はすでにそのようなサービスを試みてきましたが、それは十分正確ではありません。そのため、FirefoxやChromeの位置情報サービスを使いたいと思っています。とにかくありがとう! – LeChocdesGitans

+0

あなたのブラウザはどのようにあなたに場所を与えると思いますか?それはそのようなサービスを使用します。 – Rahul

+0

ええ、これを手に入れましたが、FirefoxやChromeが場所を指定するために使用するサービスは、私が使ったサービスよりもはるかに効率的です。ブラウザを開く代わりに直接使用する方法を知っていますか? – LeChocdesGitans

1

を使用してのpython自体にそれを行うことができます。

import requests 
import json 

response_data = requests.get('https://www.iplocation.net/go/ipinfo').text 
try: 
    response_json_data = json.loads(response_data) 
    location = response_json_data["loc"].split(",") 
    print "Latitude: %s" % location[0] 
    print "Longitude: %s" % location[1] 
except ValueError: 
    print "Exception happened while loading data" 
関連する問題