2016-05-19 7 views
2

Ich bin auf der Suche Wikipedia-Artikel Titel und Orte (lat/long) über eine große Fläche zu groß für eine einzelne URL-Abfrage wie zu erhalten:Querying wikipedia/mediawiki api nach Standort über Automatisierung mit Python Begrenzungsbox

https://en.wikipedia.org/w/api.php?action=query&list=geosearch&gsradius=6000&gscoord=51.967818|-3.290105

OR

http://api.geonames.org/wikipediaBoundingBox?north=44.1&south=-9.9&east=-22.4&west=55.2&username=demo

(das zweite ist besser, da es eine Bounding-Box zurückkehrt, während der erste, der einen Radius um einen Punkt zurückkehrt, aber es kann das Ergebnis nachgeben json (durch Hinzufügen von '& format = json'), während die zweite nicht).

Ich hätte kein Problem, wenn es im Suchbereich der Abfrage kein Limit oder ein Limit in der Anzahl der Ergebnisse gibt, die es zurückgibt. Gibt es eine Möglichkeit, dies zu umgehen?

Ich bin also auf der Suche nach Hilfe, um diese Prozedur zu automatisieren, um viele Abfragen von Begrenzungsrahmen gitterartig zu machen, die Daten zu analysieren, vielleicht mit Python, und sie in meiner Datenbank zu speichern.

Dies ist ein Code ich habe kommen mit, aber ich bin fest:

url = 'http://api.geonames.org/wikipediaBoundingBox?north=%s&south=%s&east=%s&west=%s&username=demo' 

data_coords = [ 
{north : 51.990, 51.990, 51.990}, 
south : 51.917, 51.917, 51.917}, 
east : -3.247, -3.117, -2.987}, 
west : -3.377, -3.247, 3.117} 
] 

for i in data_coords: 

urllib2.urlopen(url % (i['north']), (i['south']), (i['east']), (i['west'])) 

Hilfe würde geschätzt, danke!

Antwort

1

Ich liebe die Frage. Hoffe, das hilft:

Sie müssen den main_area eingeben, der Ihr Ausgangsgebiet ist. Danach können Sie den Rest anrufen, wo der Druck jetzt ist.

beispielsweise für die Eingabe: main_area = [10,0, 10,0, 20,0, 20,0]

und 2 Divisionen (Jede Division ist^2)

es Ausgänge:

[10.0, 10.0, 12.5, 12.5] 
[10.0, 12.5, 12.5, 15.0] 
[12.5, 10.0, 15.0, 12.5] 
[12.5, 12.5, 15.0, 15.0] 
[10.0, 15.0, 12.5, 17.5] 
[10.0, 15.0, 12.5, 20.0] 
[12.5, 15.0, 15.0, 17.5] 
[12.5, 15.0, 15.0, 20.0] 
[15.0, 10.0, 17.5, 12.5] 
[15.0, 15.0, 17.5, 15.0] 
[17.5, 10.0, 20.0, 12.5] 
[17.5, 15.0, 20.0, 15.0] 
[15.0, 15.0, 17.5, 17.5] 
[15.0, 17.5, 17.5, 20.0] 
[17.5, 15.0, 20.0, 17.5] 
[17.5, 17.5, 20.0, 20.0] 
+0

Danke die Antwort. Hmm Ich bin mir nicht sicher, ob ich verstehe, was du meinst, wie gefällt das der URL-Abfrage? – James

+0

Ich stellte mir die Frage, wie man aus einer großen Bounding-Box 8 kleine Bounding Boxes bekommt. Ist Ihre Frage mehr damit verbunden, wie man den JSON tatsächlich bekommt? –

+0

Nicht ganz, ich möchte mehrere weitere Kästchen ähnlicher Größe bekommen. Die Liste der Coords, die ich angegeben habe, zeigt nur 3 davon, aber ich möchte 50+ machen – James