我希望将维基百科页面作为文本。
我从这里查看了维基百科API https://en.wikipedia.org/w/api.php,其中说为了将页面作为文本,我需要将其附加到页面地址:
api.php?action=query&meta=siteinfo&siprop=namespaces&format=txt
但是,当我尝试将此后缀附加到普通页面的地址时,找不到该页面:
https://en.wikipedia.org/wiki/George_Washington/api.php?action=query&meta=siteinfo&siprop=namespaces&format=txt
按照Get Text Content from mediawiki page via API的说明,我尝试adding /api.php?action=parse&page=test
到查询字符串的末尾。因此,我得到了这个:
https://en.wikipedia.org/wiki/George_Washington/api.php?action=parse&page=test
然而,这也不起作用。
答案 0 :(得分:2)
NB :所有这些示例均已启用CORS。
从精确标题(如the wikipedia page url中所示)以json格式获取文本:
通过关键字搜索相关页面,获取ID,获取准确的标题/网址,快速提取文字;
通过精确标题获取Wiki页面ID :
通过维基页面ID获取完整的html :
https://en.wikipedia.org/w/api.php?action=parse&origin=*&format=json&pageid=100017
获取已剥离的html ,没有Wikidata的较轻版本。
交叉来源:
顺便说一句,使用CORS请求,通过了解或搜索ID和/或页面标题,我们可以使用fetch在ssl上下文中的任何位置嵌入一些wiki文本。
在ID未知的情况下,我们必须循环通过the json。
fetch("https://en.wikipedia.org/w/api.php?action=query&origin=*&prop=extracts&explaintext&format=json&titles=Sokolsky_Opening").then(v => v.json()).then((function(v){
main.innerHTML = v["query"]["pages"]["100017"]["extract"]
})
)
<pre id="main" style="white-space: pre-wrap"></pre>
祝你好运。
答案 1 :(得分:1)
您必须使用部分these formats:json
,jsonfm
,none
,php
,phpfm
,rawfm
,xml
或xmlfm
,因此txt
格式无效。您的API链接也是错误的,请使用:
https://en.wikipedia.org/w/api.php?action=query&titles=George_Washington&prop=revisions&rvprop=content&format=xml