2011-10-03 10 views
20

विकिपीडिया लेखों में इन्फोबॉक्स टेम्पलेट्स हो सकते हैं। निम्नलिखित कॉल से मैं एक लेख का पहला भाग प्राप्त कर सकता हूं जिसमें इन्फोबॉक्स शामिल है।Mediawiki API द्वारा विकिपीडिया आलेख से इन्फोबॉक्स कैसे प्राप्त करें?

http://en.wikipedia.org/w/api.php?action=parse&pageid=568801&section=0&prop=wikitext 

जो मैं चाहता हूं वह एक प्रश्न है जो केवल इन्फोबॉक्स डेटा लौटाएगा। क्या यह संभव है?

+1

[विकिपीडिया की इन्फोबॉक्स खंड हो रही है] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3312346/getting-the-infobox-section-of-wikipedia) – Nemo

+0

सी [कैसे निकालने के लिए विकिपीडिया इन्फोबॉक्स से जानकारी?] (https://stackoverflow.com/questions/33862336/how-to-extract-information-from-a-wikipedia-infobox) अधिक विस्तृत उत्तर के लिए। – Tgr

उत्तर

7

इन्फोबॉक्स स्वयं को पार्स करने के बजाय, जो काफी जटिल है, DBPedia पर एक नज़र डालें, जिसमें विकिपीडिया इन्फोबॉक्स डेटाबेस डेटाबेस के रूप में निकाले गए हैं।

+0

शानदार टिप! धन्यवाद! अपने स्वयं के विकीमीडिया एपीआई द्वारा पार्सिंग करके पहिया को फिर से न करें। – ArisRe82

+1

हालांकि, यह आपको किसी विशेष इकाई को सभी रिश्ते देगा लेकिन आपको यह नहीं बताएगा कि इन्फोबॉक्स में कौन से फ़ील्ड मौजूद हैं – MFARID

23

आप इस तरह विकिपीडिया एपीआई के लिए एक यूआरएल कॉल के साथ यह कर सकते हैं:

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xmlfm&titles=Scary%20Monsters%20and%20Nice%20Sprites&rvsection=0 

अपने पृष्ठ शीर्षक के साथ titles= अनुभाग बदलें, और format=json को format=xmlfm अगर आप json प्रारूप में लेख चाहते हैं। @ गैरी के जवाब पर

2

बिल्डिंग, आप विकिपीडिया तो जैसे rvparse पैरामीटर के माध्यम से आप के लिए html में जानकारी बॉक्स पार्स हो सकता है:

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=Scary%20Monsters%20and%20Nice%20Sprites&rvsection=0&rvparse 

नोट है कि न तो विधि सिर्फ जानकारी बॉक्स वापस आ जाएगी। लेकिन एचटीएमएल सामग्री से, आप कक्षा infobox के साथ table निकालें (के माध्यम से, उदा। सुंदरसूप) निकाल सकते हैं।

Python में, आपको निम्न

resp = requests.get(url).json() 
page_one = next(iter(resp['query']['pages'].values())) 
revisions = page_one.get('revisions', []) 
html = next(iter(revisions[0].values())) 
# now parse the html 
1

की तरह कुछ करने के पेज एक सही पक्ष इन्फोबॉक्स है, तो txt रूप में प्राप्त करने के लिए इस URL का उपयोग करें। मेरा उदाहरण तत्व हाइड्रोजन का उपयोग कर रहा है। आपको बस इतना करना है कि आप अपने शीर्षक के साथ "हाइड्रोजन" को प्रतिस्थापित करें।

https://en.wikipedia.org/w/index.php?action=raw&title=Template:Infobox%20hydrogen

आप JSON प्रारूप में उपयोग के लिए देख रहे हैं, तो इस URL है, लेकिन इसकी बहुत नहीं।

https://en.wikipedia.org/w/api.php?action=parse&page=Template:Infobox%20hydrogen&format=json