2017-12-20 10 views
0

Okay, also versuche ich eine 'Fixture Finder' Website für Rugby Teams und Spieler in ganz Großbritannien zu erstellen, ich versuche derzeit einen Web Scraper mit Python und Beautifulsoup zu implementieren um Google nach den Adressen zu kratzen, um dann geocodiert und als lange & lat für die Karten-API in die Datenbank eingefügt zu werden, um es für den Benutzer abzubilden.Scraping Adressen auf einem County Scale mit Python & BS4

Meine Frage ist, gibt es einen Weg, in dem ich einfach die Google Geocoder API verwenden könnte, um die langen & Lat aller Clubs in diesem bestimmten Landkreis abrufen und dann durch BeautifulSoup analysieren, um die lange und lat aus der abzurufen generierte Seite (und dann nur spülen und wiederholen Sie für alle Landkreise in Großbritannien) nach dem Beispiel auf: https://pypi.python.org/pypi/geocoder/1.8.0#downloads sondern auf einer Kreisskala

oder wenn jemand etwas Licht in potenziell Schaben die Objekte aus der google Maps vergießen konnte, weil ich ein allgemeines Gefühl bekomme, dass Karten nicht gekratzt werden dürfen.

Einsicht sehr geschätzt

+0

wenn Sie API verwenden, dann erhalten Sie Ergebnisse als JSON (nicht HTML), die Sie leicht zu Pythons Verzeichnis umwandeln kann Modul 'json mit '. Um Daten vom Server zu erhalten, benötigen Sie Module wie 'urllib' oder' requests' - mit 'requests' können Sie' response.json() 'verwenden und schon werden JSON-Daten in das Dictionary konvertiert. Es sollte sogar ein Python-Modul geben, um mit Google APIs zu arbeiten. – furas

+0

Wenn Sie Punkte von Google Map ohne API benötigen, dann Map verwendet JavaScript-Code, der "Marker" auf der Karte erstellen - und Sie können versuchen, Zeichenfolge "Marker" in JavaScript-Code zu finden, lat, long zu finden. Beispielcode von Javascript in der Google-Dokumentation: [Google Maps-APIs - Markierungen] (https://developers.google.com/maps/documentation/javascript/markers) – furas

+0

'Geocoder' von Ihrem Link können Adressen in' lat, long' konvertieren nur wenn Sie bereits Adressen von Rugby-Teams haben. Problem ist es, diese Adressen zu finden. Sie können in der Google-Suche oder auf anderen Portalen mit Sportnachrichten suchen. – furas

Antwort

0

Mit Python Client for Google Maps Services werden würde, und dieser Code Ich habe Namen und Orte (und mehr) für die Suche nach 'Rugby Club, London'

Sie werden ein eigenes Projekt auf developers.google.com/console erstellen müssen, aktivieren Places API for Web Service (es gibt keine Version für Desktop Application) und erhalten credencial für PlacesAPI - es gibt Ihnen key= (API-Schlüssel).

Der aktuelle key= ist aktiv, damit Sie Code testen können, aber ich werde ihn später deaktivieren.

import googlemaps 

gmaps = googlemaps.Client(key='AIzaSyBiC8vKEEF-MLP9a2de0PLs-S_XrEL0kSQ') 

results = gmaps.places('Rugby Club, London') 

for key in item.keys(): 
    print('key:', key) 

print('-----') 

for item in results['results']: 
    print('name:', item['name']) 
    print('lat:', item['geometry']['location']['lat']) 
    print('lng:', item['geometry']['location']['lng']) 
    print('location:', item['geometry']['location']) 
    print('---') 

print('-----') 

#for item in results['results'][:1]: 
# for key, value in item.items(): 
#  print(key, ':', value) 

Ergebnis: (verfügbaren Schlüssel und einige Namen und Standorte)

key: formatted_address 
key: geometry 
key: icon 
key: id 
key: name 
key: opening_hours 
key: photos 
key: place_id 
key: rating 
key: reference 
key: types 
----- 
name: East London Rugby Football Club 
lat: 51.5291765 
lng: 0.0102242 
location: {'lat': 51.5291765, 'lng': 0.0102242} 
--- 
name: Hampstead Rugby Football Club 
lat: 51.5571358 
lng: -0.1555037 
location: {'lat': 51.5571358, 'lng': -0.1555037} 
--- 
name: Chiswick Rugby Club 
lat: 51.47323 
lng: -0.256633 
location: {'lat': 51.47323, 'lng': -0.256633} 
--- 
name: Wimbledon Rugby Football Club 
lat: 51.41975009999999 
lng: -0.2464434 
location: {'lat': 51.41975009999999, 'lng': -0.2464434} 
--- 
name: Saracens Amateur RFC 
lat: 51.64230209999999 
lng: -0.1429848 
location: {'lat': 51.64230209999999, 'lng': -0.1429848} 
--- 
name: Kilburn Cosmos RFC 
lat: 51.55542000000001 
lng: -0.2297043000000001 
location: {'lat': 51.55542000000001, 'lng': -0.2297043000000001} 
--- 
name: Barnes Rugby Football Club 
lat: 51.47568860000001 
lng: -0.2373847 
location: {'lat': 51.47568860000001, 'lng': -0.2373847} 
--- 
name: Southwark Tigers Rugby Club 
lat: 51.4839377 
lng: -0.07720149999999999 
location: {'lat': 51.4839377, 'lng': -0.07720149999999999} 
--- 
name: HACKNEY RFC 
lat: 51.5732467 
lng: -0.0611062 
location: {'lat': 51.5732467, 'lng': -0.0611062} 
--- 
name: UCS Old Boys Rugby Club 
lat: 51.5575127 
lng: -0.2022654 
location: {'lat': 51.5575127, 'lng': -0.2022654} 
--- 
name: Millwall Rugby Club 
lat: 51.487884 
lng: -0.010493 
location: {'lat': 51.487884, 'lng': -0.010493} 
--- 
name: Haringey Rhinos RFC 
lat: 51.604738 
lng: -0.099553 
location: {'lat': 51.604738, 'lng': -0.099553} 
--- 
name: Finchley RFC 
lat: 51.6067705 
lng: -0.1698911 
location: {'lat': 51.6067705, 'lng': -0.1698911} 
--- 
name: Trailfinders Rugby Club 
lat: 51.520878 
lng: -0.306115 
location: {'lat': 51.520878, 'lng': -0.306115} 
--- 
name: Old Ruts Rugby Club 
lat: 51.4079431 
lng: -0.1993505 
location: {'lat': 51.4079431, 'lng': -0.1993505} 
--- 
name: Ealing Trailfinders Rugby Club 
lat: 51.524832 
lng: -0.3293849999999999 
location: {'lat': 51.524832, 'lng': -0.3293849999999999} 
--- 
name: Chingford Rugby Football Club 
lat: 51.6301123 
lng: -0.0171661 
location: {'lat': 51.6301123, 'lng': -0.0171661} 
--- 
name: Old Elthamians RFC Senior Rugby 
lat: 51.43445149999999 
lng: 0.0296538 
location: {'lat': 51.43445149999999, 'lng': 0.0296538} 
--- 
name: Eton Manor RFC 
lat: 51.579528 
lng: 0.03874 
location: {'lat': 51.579528, 'lng': 0.03874} 
--- 
name: London Skolars Rugby League Club 
lat: 51.60465900000001 
lng: -0.100032 
location: {'lat': 51.60465900000001, 'lng': -0.100032} 
---