如何使用Python从Wikipedia文章中提取第一段?
例如,阿尔伯特爱因斯坦,那将是:
阿尔伯特爱因斯坦(发音为/ælbərtaɪnstaɪn/;德语:[albɐtaɪnʃtaɪn](听); 1879年3月14日 - 1955年4月18日)是理论物理学家,哲学家和作家,被广泛认为是最具影响力和标志性的科学家和知识分子之一有史以来 作为德国 - 瑞士诺贝尔奖获得者,爱因斯坦经常被视为现代物理学之父.[2] 他获得了1921年诺贝尔物理学奖,"因为他为理论物理学服务,特别是他发现了光电效应定律".[3]
gol*_*ith 43
我写了一个Python库,旨在使这很容易.在Github上查看.
要安装它,请运行
$ pip install wikipedia
Run Code Online (Sandbox Code Playgroud)
然后要获得文章的第一段,只需使用该wikipedia.summary
函数.
>>> import wikipedia
>>> print wikipedia.summary("Albert Einstein", sentences=2)
Run Code Online (Sandbox Code Playgroud)
版画
阿尔伯特爱因斯坦(/ælbərtaɪnstaɪn/;德语:[albɐtaɪnʃtaɪn](听); 1879年3月14日 - 1955年4月18日)是德国出生的理论物理学家,他发展了广义相对论,是现代物理学的两大支柱之一(与量子力学一起).虽然他以质量能量等价公式E = mc2(被称为"世界上最着名的方程式")而闻名,但他获得了1921年诺贝尔物理学奖,因为他为理论物理学提供的服务,特别是他的发现光电效应定律".
至于它是如何工作的,向MediaWiki API wikipedia
的Mobile Frontend Extension发出请求,该API返回维基百科文章的移动友好版本.具体而言,通过传递参数prop=extracts&exsectionformat=plain
,MediaWiki服务器将解析Wikitext并返回您正在请求的文章的纯文本摘要,包括整个页面文本.它还接受的参数exchars
和exsentences
,这并不奇怪,限制由API返回的字符和句子的数量.
jok*_*net 41
前段时间我用纯文本获得维基百科文章.我知道它们不是最好的解决方案,但您可以根据自己的需求进行调整:
你可以像这样使用它:
from wikipedia import Wikipedia
from wiki2plain import Wiki2Plain
lang = 'simple'
wiki = Wikipedia(lang)
try:
raw = wiki.article('Uruguay')
except:
raw = None
if raw:
wiki2plain = Wiki2Plain(raw)
content = wiki2plain.text
Run Code Online (Sandbox Code Playgroud)
Jen*_*man 11
我做的是这样的:
import urllib
import urllib2
from BeautifulSoup import BeautifulSoup
article= "Albert Einstein"
article = urllib.quote(article)
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')] #wikipedia needs this
resource = opener.open("http://en.wikipedia.org/wiki/" + article)
data = resource.read()
resource.close()
soup = BeautifulSoup(data)
print soup.find('div',id="bodyContent").p
Run Code Online (Sandbox Code Playgroud)
ski*_*age 10
Wikipedia运行MediaWiki扩展,将此功能作为API模块提供.TextExtracts实现action=query&prop=extracts
了返回前N个句子和/或只是引言的选项,如HTML或纯文本.
以下是您要制作的API调用,请尝试:https: //en.wikipedia.org/w/api.php?action = query&prop = extraescts&title = Albert%20Einstein&exintro = &exsentences = 2 &exinteintext=&redirects=&formatversion=2
action=query&prop=extracts
要求此信息redirects=
(true)因此,如果您要求"titles = Einstein",您将获得Albert Einstein的页面信息formatversion=2
在UTF-8中使用更清晰的格式.有各种各样的库来包装调用MediaWiki动作API,例如在DGund的答案中的那个,但是自己进行API调用并不太难.
搜索结果中的页面信息讨论了获取此文本提取,以及获取文章的描述和引导图像.
相对较新的REST API有一个summary
非常适合此用途的方法,并且可以执行此处其他答案中提到的许多操作(例如删除 wikicode)。如果适用的话,它甚至包括图像和地理坐标。
使用可爱的requests
模块和 Python 3:
import requests
r = requests.get("https://en.wikipedia.org/api/rest_v1/page/summary/Amsterdam")
page = r.json()
print(page["extract"]) # Returns 'Amsterdam is the capital and...'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
43143 次 |
最近记录: |