2016-02-12 5 views
5

आम तौर पर मैं लंदन के अंदर निर्देशांक के साथ सभी विकिपीडिया लेखों के लिंक (और शीर्षक) प्राप्त करना चाहता हूं। मैंने Google का उपयोग करने की कोशिश की, लेकिन दुर्भाग्य से उचित खोज शब्दों के साथ नहीं आया। कोई संकेत?लंदन के अंदर निर्देशांक के साथ सभी विकिपीडिया लेख प्राप्त करना

London map

+0

कोई मीडियाविकि एपीआई नहीं है जो आपको एक आकार के भीतर खोजने की अनुमति देगी। आपको सभी geocoded लेख लाने होंगे, और फिर जांचें कि आपके सुविधा के भीतर कौन से निर्देशांक हैं .. – leo

उत्तर

3

यह वास्तव में सिर्फ विचारों कि एक टिप्पणी के लिए बहुत बड़ा था का एक संग्रह है।

आपकी सर्वश्रेष्ठ शर्त शायद DBpedia है। विकिपीडिया के एपीआई की तुलना में यह अधिक परिष्कृत क्वेरी संभावनाओं के साथ, विकिपीडिया का एक अर्थपूर्ण दर्पण है। जैसा कि आप this paper में देख सकते हैं, यह काफी जटिल स्थानिक प्रश्नों को संभाल सकता है, लेकिन आपको SPARQL में जाना होगा।

Example SPARQL query

जिसके अनुसार, विकिपीडिया के एपीआई स्थानिक प्रश्नों के लिए एक अपेक्षाकृत नई सुविधा है: Showing nearby wiki information यहाँ है कि कागज से एक आंकड़ा है। मुझे नहीं लगता कि आप बहुभुज में खोज सकते हैं, लेकिन यह एक अच्छी शुरुआत है।

लेखों के निर्देशांक प्राप्त करने के लिए मैंने mwclient का उपयोग करने के बारे में लिखा एक पिछला उत्तर दिया है, लेकिन उस उपयोगकर्ता को स्क्रैप करने के लिए आलेखों की सूची रखने का लाभ था।

Geonames.org भौगोलिक लेखों की खोज को कम करने में मदद करने में सक्षम हो सकता है। अंग्रेजी विकिपीडिया में 806,000 भौगोलिक लेखों की जांच करना बहुत बुरा नहीं होगा।

प्रदर्शन कारणों से, और विकिपीडिया के सर्वरों के लिए परेशानी पैदा करने से बचने के लिए, आप Wikipedia या डीबीपीडिया के डंप से काम करने पर विचार कर सकते हैं।

2

OpenStreetMap और Overpass API के लिए एक काम की तरह दिखता है।

हमारे क्वेरी हम overpass turbo (ओवरपास एपीआई के लिए एक अच्छी दृश्यपटल) के लिए जाने के निर्माण के लिए, जादूगर खोलने के लिए और "विकिपीडिया = * लंदन में" दर्ज क्योंकि हम wikipedia tag में रुचि रखते हैं।

स्वचालित रूप से जेनरेट और निष्पादित क्वेरी यह होगी।

[out:json][timeout:25]; 
// fetch area “London” to search in 
{{geocodeArea:London}}->.searchArea; 
// gather results 
(
    // query part for: “wikipedia=*” 
    node["wikipedia"](area.searchArea); 
    way["wikipedia"](area.searchArea); 
    relation["wikipedia"](area.searchArea); 
); 
// print results 
out body; 
>; 
out skel qt; 

यह बहुत अधिक तत्वों वापस आ जाएगी, भी भारी आपके ब्राउज़र बोझ। और टाइमआउट बहुत कम होने के कारण विफल हो सकता है।

हम इसे थोड़ा संशोधित करते हैं। हम टाइमआउट बढ़ाते हैं और हम रिकर्सन चरण (>;) को हटाते हैं क्योंकि हम केवल प्रत्यक्ष परिणामों में रुचि रखते हैं और कोई संबंधित ऑब्जेक्ट नहीं करते हैं।

[out:json][timeout:90]; 
// fetch area “London” to search in 
{{geocodeArea:London}}->.searchArea; 
// gather results 
(
    // query part for: “wikipedia=*” 
    node["wikipedia"](area.searchArea); 
    way["wikipedia"](area.searchArea); 
    relation["wikipedia"](area.searchArea); 
); 
// print results 
out body; 
out skel qt; 

आप result here देख सकते हैं: परिणामी क्वेरी इस एक हो जाएगा।

अब इसे निर्यात करने के लिए कई विकल्प हैं। ओवरपास टर्बो पर आप निर्यात पर जा सकते हैं और या तो सीधे परिणामों को सुरक्षित कर सकते हैं या कच्चे क्वेरी को ओवरपास एपीआई को भेज सकते हैं। अब आप सीधे अपनी पाइथन लिपि से यह क्वेरी चला सकते हैं।

ध्यान दें कि output formats उपलब्ध हैं: JSON, XML और CVS।और विकिपीडिया टैग के बगल में आपको wikidata tag में रुचि भी हो सकती है।

यह भी ध्यान रखें कि यह आपको सभी विकिपीडिया पृष्ठों को लंदन के अंदर निर्देशांक के साथ नहीं मिलेगा, केवल ओएसएम डेटाबेस में मौजूद एक है।

+1

ठीक है, सामान्य रूप से आप कमाल और आराध्य हैं। समस्या यह है कि परिणाम एक मजाक है। OpenStreetMap शानदार है, लेकिन जब उस टैग की बात आती है तो गुणवत्ता वास्तव में कम होती है। – marcus

+0

मैंने विकिपीडिया टैग के कवरेज की तुलना नहीं की है, लेकिन मुझे लगता है कि आप सही हैं:/ – scai

+1

अच्छी बात यह है कि पिछले वर्ष में गुणवत्ता में काफी सुधार हुआ है, और अब एक बार में विकीडाटा और ओएसएम दोनों से पूछताछ करने के लिए उपकरण हैं - https://wiki.openstreetmap.org/wiki/Wikidata%2BOSM_SPARQL_query_service – Yurik

संबंधित मुद्दे