python wikipedia scraping - 获取其他语言的同一页面的链接?

niv*_*niv 5 python wikipedia web-scraping

wikipedia如何使用或包获取从维基百科页面到其他语言的相同页面的所有链接wikitools

例如:

我有页面http://en.wikipedia.org/wiki/Stack_overflow,我试图获取其他可能语言的同一页面的链接,例如: http: //ko.wikipedia.org/wiki/ %EC%8A%A4%ED%83%9D_%EC%98%A4%EB%B2%84%ED%94%8C%EB%A1%9C(韩语)

http://zh.wikipedia.org/wiki/%E5%A0%86%E7%96%8A%E6%BA%A2%E4%BD%8D(中文)。

我想获取所有可能的页面。

我的问题与这个人的问题类似:How to get wikipedia page in multi languages? ,只是我想弄清楚是否可以使用上述包(它们很容易通过 pip 获得)完成相同的工作,而不是重新发明轮子。

我也很想知道这是否不可能,或者是否有其他软件包可以轻松完成这项工作。谢谢!

ale*_*cxe 3

我还没有在 和wikipedia包中找到这个确切的功能wikitoolswikipedia虽然允许通过使用set_lang()方法在语言之间切换。

\n\n

我没有看到通过获取语言列表BeautifulSoup然后使用wikipedia不同语言获取页面内容有什么不好的地方:

\n\n
# -*- coding: utf-8 -*-\n\nimport urllib2\nfrom bs4 import BeautifulSoup\nimport wikipedia\n\n# get languages\nsoup = BeautifulSoup(urllib2.urlopen(\'http://en.wikipedia.org/wiki/Stack_Overflow\'))\nlinks = [(el.get(\'lang\'), el.get(\'title\')) for el in soup.select(\'li.interlanguage-link > a\')]\n\nfor language, title in links:\n    page_title = title.split(u\' \xe2\x80\x93 \')[0]\n    wikipedia.set_lang(language)\n    page = wikipedia.page(page_title)\n    print language\n    print page.summary\n    print "-----"\n
Run Code Online (Sandbox Code Playgroud)\n\n

印刷:

\n\n
de\nPuffer\xc3\xbcberl\xc3\xa4ufe (englisch buffer overflow) geh\xc3\xb6ren zu den h\xc3\xa4ufigsten Sicherheitsl\xc3\xbccken in aktueller Software, die sich u. a. \xc3\xbcber das Internet ausnutzen lassen k\xc3\xb6nnen. Im Wesentlichen werden bei einem Puffer\xc3\xbcberlauf durch Fehler im Programm zu gro\xc3\x9fe Datenmengen in einen daf\xc3\xbcr zu kleinen reservierten Speicherbereich, den Puffer, geschrieben, wodurch nach dem Ziel-Speicherbereich liegende Speicherstellen \xc3\xbcberschrieben werden.\nDreht es sich nicht um einen ganzen Datenblock, sondern um eine Zieladresse eines einzelnen Datensatzes, spricht man auch von pointer overflow, nach dem Pointer (Zeiger), der anzeigt, wo der Datensatz im Puffer hingeschrieben werden soll.\n\n-----\nes\nEn inform\xc3\xa1tica, un desbordamiento de pila (stack overflow/overrun) es un problema aritm\xc3\xa9tico que hace referencia al exceso de flujo de datos almacenados en la pila de una funci\xc3\xb3n, esto permite que la direcci\xc3\xb3n de retorno de la pila pueda ser modificada por otra parte de un atacante para obtener un beneficio propio, que generalmente es malicioso.\n\n...\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

您也可以完全切换到BeautifulSoup,但这很容易导致重新发明轮子:

\n\n
import urllib2\nfrom bs4 import BeautifulSoup\n\n# get languages and links\nsoup = BeautifulSoup(urllib2.urlopen(\'http://en.wikipedia.org/wiki/Stack_Overflow\'))\nlinks = [(el.get(\'lang\'), el.get(\'href\')) for el in soup.select(\'li.interlanguage-link > a\')]\n\nfor language, link in links:\n    soup = BeautifulSoup(urllib2.urlopen(\'http:\' + link))\n    print language, soup.title.text\n
Run Code Online (Sandbox Code Playgroud)\n\n

印刷:

\n\n
de Stack Overflow (Website) \xe2\x80\x93 Wikipedia\nes Stack Overflow - Wikipedia, la enciclopedia libre\nfa \xd8\xa7\xd8\xb3\xd8\xaa\xda\xa9 \xd8\xa7\xd9\x88\xd8\xb1\xd9\x81\xd9\x84\xd9\x88 - \xd9\x88\xdb\x8c\xda\xa9\xdb\x8c\xe2\x80\x8c\xd9\xbe\xd8\xaf\xdb\x8c\xd8\xa7\xd8\x8c \xd8\xaf\xd8\xa7\xd9\x86\xd8\xb4\xd9\x86\xd8\xa7\xd9\x85\xd9\x87\xd9\x94 \xd8\xa2\xd8\xb2\xd8\xa7\xd8\xaf\nfr Stack Overflow \xe2\x80\x94 Wikip\xc3\xa9dia\nko \xec\x8a\xa4\xed\x83\x9d \xec\x98\xa4\xeb\xb2\x84\xed\x94\x8c\xeb\xa1\x9c (\xec\x9b\xb9\xec\x82\xac\xec\x9d\xb4\xed\x8a\xb8) - \xec\x9c\x84\xed\x82\xa4\xeb\xb0\xb1\xea\xb3\xbc, \xec\x9a\xb0\xeb\xa6\xac \xeb\xaa\xa8\xeb\x91\x90\xec\x9d\x98 \xeb\xb0\xb1\xea\xb3\xbc\xec\x82\xac\xec\xa0\x84\nit Stack Overflow - Wikipedia\nhu Stack Overflow - Wikip\xc3\xa9dia\nja Stack Overflow - Wikipedia\npl StackOverflow \xe2\x80\x93 Wikipedia, wolna encyklopedia\nro Stack Overflow - Wikipedia\nru Stack Overflow \xe2\x80\x94 \xd0\x92\xd0\xb8\xd0\xba\xd0\xb8\xd0\xbf\xd0\xb5\xd0\xb4\xd0\xb8\xd1\x8f\nta \xe0\xae\x87\xe0\xae\x9a\xe0\xaf\x81\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f\xe0\xae\xbe\xe0\xae\x95\xe0\xaf\x8d \xe0\xae\x93\xe0\xae\xb5\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\x83\xe0\xae\xaa\xe0\xaf\x81\xe0\xae\xb2\xe0\xaf\x8b - \xe0\xae\xa4\xe0\xae\xae\xe0\xae\xbf\xe0\xae\xb4\xe0\xaf\x8d \xe0\xae\xb5\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x80\xe0\xae\x9f\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\nuk Stack Overflow \xe2\x80\x94 \xd0\x92\xd1\x96\xd0\xba\xd1\x96\xd0\xbf\xd0\xb5\xd0\xb4\xd1\x96\xd1\x8f\nzh Stack Overflow - \xe7\xbb\xb4\xe5\x9f\xba\xe7\x99\xbe\xe7\xa7\x91\xef\xbc\x8c\xe8\x87\xaa\xe7\x94\xb1\xe7\x9a\x84\xe7\x99\xbe\xe7\xa7\x91\xe5\x85\xa8\xe4\xb9\xa6\n
Run Code Online (Sandbox Code Playgroud)\n