获取特定的维基百科列表

时间:2018-09-27 07:59:54

标签: angular typescript api fetch wikipedia-api

我如何尽可能轻松地从Wikipedia中获取这些记录?我需要在json文件中为这些区域中的每个区域显示名称:https://en.wikipedia.org/wiki/Category:Surnames_by_language

示例

[
 {
  name: "Agalliu",
  language: "Albanian"
 },
 {
  name: "Agolli",
  language: "Albanian"
 }
 ...
]

我正在使用Angular5。

另外:使用数据来自维基百科的信息来创建数据库是否合法?

谢谢!

1 个答案:

答案 0 :(得分:1)

我不使用Angular 5或打字稿,因此在技术层面上我不知道如何开发所需的特定代码,但我认为您需要的是看看{{3} }。 HttpClient documentation可能会帮助您找到一些已经开发的模块。 Angular似乎有据可查,非常好。所以我的回答是理论性的,而不是技术性的。

关于您要在JSON文件中获取的数据,姓氏和此姓氏的语言,如果您只想使用类别中的页面,我认为最好的方法可能是提取页面标题每个页面以及从子类别的标题分析的语言。如果您想这样做:

  • 您还需要检查并清洁类别的标题。例如。 Irish-language feminine surnames‎Irish-language masculine surnames‎应该被清除为爱尔兰语。如果您将拥有另一个JSON值来保留类别的标题,那将是很好的,因为它将帮助您将来恢复URL
  • 您将需要检查每个姓氏的页面标题是否需要清除,因为如果不清除,您可能会得到诸如Hoti (surname)之类的值。当然,就像关于类别标题的最后一点一样,我建议您创建另一个JSON值以保留页面标题,并保留它的标题,因为可能需要的话。

我认为执行此操作的另一种好方法是查询Wikidata,因为有许多页面的结构非常不同,并且所有页面都没有一个通用的信息框,因此可以更轻松地获取数据,因为您可以能够抓取特定字段(语言或任何可能的语言)。但是,从Wikidata中提取它,从类别中也没有缺点:

  • 如果您只想使用您提到的类别(This search in GitHub)中的姓氏/页面,则不能选择使用Wikidata,因为Wikidata可能包含大量的数据,您将获得姓氏比类别多。
  • 每个姓氏的许多项目可能不是特定的语言。可能是它没有属性Surnames by language,或者它具有属性但值surname (multiple languages)
  • 当然,它的学习曲线可能会更大,因为您可能需要学习SPARQL和native label (P1705)

看看Wikidata Query ServiceMediaWiki API

“使用数据来自维基百科的信息来创建数据库是否合法?”

是的,这是完全合法的。您要做的就是尊重许可证。在英语维基百科的情况下,它是根据知识共享署名-相同方式共享3.0进行许可的。该许可证允许您以商业和非商业方式重用和更改内容,但是您必须归属作者并以相同的许可证共享衍生产品。

对于Wikidata,项目和属性(Q:*和P:*)的名称空间中的所有内容都在公共领域中,并标记为CC0,这是一个知识共享工具,用于显示作品在公共领域中。您可以如何处理数据?无论您想要什么。

我建议您阅读Wikidata:Data AccessCreative Commons' FAQ about the CC0