是否有任何R包允许查询维基百科(最有可能使用Mediawiki API)获取与此类查询相关的可用文章列表,以及导入文本挖掘的选定文章?
任何人都知道如何使用mediawiki API获取维基百科页面的修订数量?我已阅读此API文档,但找不到相关的API:
Revision API
我正在尝试编写一个python程序,可以在维基百科上搜索人们的出生和死亡日期.
例如,阿尔伯特爱因斯坦出生于1879年3月14日; 去世:1955年4月18日.
import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
infile = opener.open('http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&rvsection=0&titles=Albert_Einstein&format=xml')
page2 = infile.read()
Run Code Online (Sandbox Code Playgroud)
这项工作尽可能地发挥作用.page2是来自Albert Einstein维基百科页面的部分的xml表示.
我看了这个教程,现在我有xml格式的页面... http://www.travisglines.com/web-coding/python-xml-parser-tutorial,但我不明白怎么弄我想要的信息(出生和死亡日期)来自xml.我觉得我必须亲近,但是,我不知道如何从这里开始.
编辑
经过几次回复后,我安装了BeautifulSoup.我现在正处于可以打印的阶段:
import BeautifulSoup as BS
soup = BS.BeautifulSoup(page2)
print soup.getText()
{{Infobox scientist
| name = Albert Einstein
| image = Einstein 1921 portrait2.jpg
| caption = Albert Einstein in 1921
| birth_date = {{Birth date|df=yes|1879|3|14}}
| birth_place = [[Ulm]], [[Kingdom of Württemberg]], [[German Empire]]
| death_date = {{Death date and age|df=yes|1955|4|18|1879|3|14}}
| …Run Code Online (Sandbox Code Playgroud) 我可以轻松地将转储与维基所有的冠军,但这个转储包含的每一个字,甚至非英语的人.
例如,您找到souris(mouse法语):https://en.wiktionary.org/wiki/souris
有没有一种简单的方法或现有的脚本来获得只在一个标题特定语言.我想从wiktionary获得所有英语单词,不包括那种语言中不存在的单词.
到目前为止,我唯一的想法是解析文本并检查是否有==English==一行,但它太慢而无法使用.
如何使用MediaWiki API获取文章总数?
我在文档中找不到它:
即使粗略的近似也很好.
a的query一部分URL似乎由分隔&和关联的键值对组成=.
我总是使用jQuery的$.param()函数对我的查询字符串进行URL编码,因为我发现它使我的代码更具可读性和可维护性.
在过去的几天里,我发现自己正在调用MediaWiki API,但在使用硬编码的URL清理我的工作原型时,$.param()我注意到一些MediaWiki API包含带键而不是值的查询参数!
请注意该部分&redirects,它没有任何价值.
jQuery $.param()采用一个对象,因为对象只包含键值对,所以不可能传递一个成员有一个键但没有值的对象.
这很好,所以我假设我可以传递一些值,例如null或者undefined或者0似乎所有这些都被视为相似.我发现这令人惊讶,我无法在MediaWiki API文档中发现有关此背后的原因的任何内容.
好吧,通过手动构建URL字符串,我可以很容易地解决这个问题.我的问题是"这是MediaWiki API中的一个怪癖吗?或者是URL编码设计中的一个怪癖?我应该阅读哪些内容来理解没有相关值的URL编码参数背后的原因?
当我使用 Wikipedia API 执行全文搜索时,我无法将搜索范围缩小到仅标题 (srwhat=title)。
所以在任何地方搜索(默认) http://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=sql&srnamespace=14&format=xml
返回结果,如果我添加 srwhat=title,则会出现错误:
<api servedby="mw69">
<error code="srsearch-title-disabled" info="title search is disabled"/>
</api>
Run Code Online (Sandbox Code Playgroud)
这个错误甚至列在文档中(http://www.mediawiki.org/wiki/API:Search),但没有任何解释。
是否有可能获得所有维基百科国家、地区和城市之间存在关系的列表?我找不到适合此任务的任何 API。解析我需要的所有信息的最简单方法是什么?PS:我知道,我可以从其他数据源获取此信息。但是我对维基百科很感兴趣...
我正在尝试从维基百科获取所有内容:Unusual_articles,我可以通过调用此端点来获取表内容列表:
https://en.wikipedia.org/w/api.php?action=parse&format=json&prop=sections&page=Wikipedia:Unusual_articles
Run Code Online (Sandbox Code Playgroud)
我得到的数据看起来像这样:
{
title: "Wikipedia:Unusual articles",
pageid: 154126,
sections: [
{
toclevel: 1,
level: "2",
line: "Places and infrastructure",
number: "1",
index: "T-1",
fromtitle: "Wikipedia:Unusual_articles/Places_and_infrastructure",
byteoffset: null,
anchor: "Places_and_infrastructure"
},
{
toclevel: 2,
level: "3",
line: "Americas",
number: "1.1",
index: "T-2",
fromtitle: "Wikipedia:Unusual_articles/Places_and_infrastructure",
byteoffset: null,
anchor: "Americas"
},
...
Run Code Online (Sandbox Code Playgroud)
但是我无法获得特定部分的内容.例如,under Americas是带有链接和简短描述的表的列表,但有没有办法从API获取链接和简短描述?
mediawiki-api ×10
mediawiki ×5
wikipedia ×5
api ×2
wiktionary ×2
count ×1
jquery ×1
key-value ×1
parsing ×1
php ×1
python ×1
r ×1
text-mining ×1
wikimedia ×1