获取特定的维基百科列表

Fetch specific Wikipedia list

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

例子

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

我正在使用 Angular5。

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

提前致谢!

我不使用 Angular 5 和打字稿,所以我不知道在技术层面如何开发你需要的特定代码,但我认为你需要的是看看到 HttpClient documentation. This search in GitHub 可能会帮助您找到一些已经开发的模块。 Angular 似乎有据可查,非常好。所以我的回答是理论多于技术。

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

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

我认为另一种好方法是查询维基数据,因为有很多页面的结构非常不同,而且没有一个通用的信息框,这样可以更容易地获取数据,因为您将能够抓取特定领域(语言或任何可能的领域)。然而,从维基数据中提取它并且没有从类别中提取它也有缺点:

  • 如果您只想使用您提到的类别 (Surnames by language) 中的 surnames/pages,则不能使用 Wikidata,因为 Wikidata 可能有大量关于它的数据你会得到比类别更多的姓氏。
  • 可能每个姓氏的很多项目都没有特定的语言。可能它没有 属性 native label (P1705) 或者它可能有 属性 但值 surname (multiple languages)
  • 当然,它的学习曲线可能更大,因为您可能需要了解 SPARQL 和 Wikidata Query Service

看看MediaWiki API and Wikidata:Data Access

"Is it legal for me to create a database with the information that the data is from Wikipedia?"

是的,这是完全合法的。你要做的就是尊重许可证。对于英文维基百科,它是根据 Creative Commons Attribution-ShareAlike 3.0 Unported 授权的。此许可允许您以商业和 non-commercial 方式重复使用和更改内容,但您必须注明作者身份并使用同一许可共享衍生作品。

就维基数据而言,项目和属性(Q:* 和 P:*)的命名空间中的所有内容都在 public 域中并标记为 CC0,这是一种知识共享工具,用于表明作品在 public 域中。你能用这些数据做什么?随心所欲

我建议您阅读 Creative Commons' FAQ about the CC0 and the legal code of the Creative Commons Attribution-ShareAlike 3.0 Unported