gpt4 book ai didi

wikipedia - 如何从维基百科信息框中提取信息?

转载 作者:行者123 更新时间:2023-12-03 13:25:34 26 4
gpt4 key购买 nike

有这个花哨的infobox在 <一些维基百科文章> 中。如何获得 的值?

最佳答案

错误的方法:尝试解析 HTML

Use (cURL/jQuery/file_get_contents/requests/wget/more jQuery) to fetch the HTML article code of the article, then use a DOM parser to extract table.infobox tr[3] td / use a regex.


在大多数情况下,这实际上是一个非常糟糕的主意。 Wikipedia 的 HTML 代码对解析不是特别友好(尤其是作为手写模板系统的信息框),信息框的确切结构会随着信息框的变化而变化,并且信息框的结构可能会随着时间而改变。您可能还会错过一些原本可用的功能,例如国际化。
另一种错误的方式:试图解析wikitext
乍一看,一些文章的 wikitext 看起来像是信息框的一个非常简单的表示:
{{ Infobox Foo
| param1 = bar
| param2 = 123
...
实际上,情况并非如此。模板是“递归的”,所以你可能会遇到像 param1 = {{convert|10|km|mi}} 这样的东西。 ;模板参数可能包含复杂的 wikitext 或 HTML 标记;文章 wikitext 中可能缺少某些参数,并由模板从子页面或其他数据存储库中获取。如果它包含其他具有自己参数的模板,那么仅仅找出参数的开始和结束位置可能不是一件简单的事情。
理想方式:使用结构化数据源
有各种项目以结构化的形式提供维基百科信息框中包含的信息;两个大的是 Wikidata 和 DBpedia。
Wikidata是一个构建包含结构化数据的知识库的项目;它由构建维基百科的同一个全局运动维护,因此信息正在被转移。这是一个手动过程,因此并非 Wikipedia 中的所有信息都可以通过 Wikidata 获得,另一方面,Wikidata 中有很多信息,但 Wikipedia 中没有。您可以通过文章页面左侧工具栏中的 Wikidata 项目链接找到文章的 Wikidata 页面并查看其中包含哪些信息;以编程方式,您可以使用 wbgetentities 访问 Wikidata 信息。 API 模块 ( sandbox , explanation of concepts ),例如 wikidata.org/w/api.php?action=wbgetentities&sites=enwiki&titles=Albert_Einstein .还有一个 SPARQL endpoint , database dumps ,以及 PHP 中的客户, JavaPython .
DBPedia是一个通过自动化方式收集维基百科信息框信息并以结构化形式发布的项目。您可以通过访问 http://dbpedia.org/page/<Wikipedia article name> 找到 Wikipedia 文章的 DBPedia 页面。 ,例如 http://dbpedia.org/page/Albert_Einstein .它有许多数据格式、转储、 a SPARQL endpointvarious other things .
错误的方法做对了
如果您需要的信息无法通过 Wikidata 或 DBpedia 获得,仍然有从信息框中提取数据的半结构化方法。对于基于 HTML 的提取,您可以使用 Wikipedia 的 REST content API (例如 https://en.wikipedia.org/api/rest_v1/page/html/Albert_Einstein )返回 a richer, more semantic HTML与普通文章页面上使用的相比,并在其中保留了一些有关模板结构的信息。
或者,您可以从 wikitext 开始,并使用更简单的客户端 mwparserfromhell 将其解析为语法树。 Python 模块 ( docs ) 或更强大的 parsoid-jsapi它与 Wikipedia REST 内容服务交互。
尝试从 wikitext 中提取信息框内容的高级 Python 库是 wptools .

关于wikipedia - 如何从维基百科信息框中提取信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33862336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com