自动解析消歧页面

2024-04-20 08:34:10 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

我正在使用wikipediaapi来获取我解析的页面HTML。我使用this one之类的查询来获取页面第一部分的HTML。在

mediawikiapi提供了一个方便的参数redirects,它将使API自动跟踪重定向其他页面的页面。例如,如果我用^{}搜索“Cats”,就会显示Cat的结果,因为Cats重定向到Cat。在

我想为disambiguation pages提供一个类似的函数,例如this,如果我到达一个消歧页面,我会自动重定向到第一个链接。例如,如果我请求一个类似Mercury的页面,我会自动被重定向到Mercury (element),因为它是页面中列出的第一个链接。在

pythonhtml解析器BeautifulSoup在处理大型文档时速度相当慢。通过使用section=0只请求文章的第一部分(这是我使用的全部内容),我可以快速地解析它。这对大多数文章来说是完美的。但是对于消歧页面,第一部分没有包含指向特定页面的任何链接,这是一个糟糕的解决方案。但是如果我请求的比第一部分多,HTML加载就会减慢,这对于大多数文章来说是不必要的。请参阅this query以获取第一节中未包含链接的消歧页面示例。在

到目前为止我所拥有的

到目前为止,我已经在检测何时到达消歧页面。我用代码

bs4.BeautifulSoup(page_html).find("p", recursive=false).get_text().endswith(("refer to:", "refers to:"))

我还花了一段时间试图编写自动跟踪链接的代码,然后才意识到链接不包含在

我的约束条件

我宁愿把请求的数量控制在最低限度。我还需要尽可能少地解析HTML,因为速度对我的应用程序至关重要。在

可能的解决方案(我需要帮助执行)

我可以设想几种解决这个问题的方法:

  1. MediaWiki API中自动跟踪消歧页面第一个链接的方法
  2. Mediawiki API中的一种方法,允许它根据条件返回不同数量的HTML内容(如存在消歧模板)
  3. 一种显著提高bs4速度的方法,这样我最终是否不得不解析整个页面HTML都无关紧要

Tags: 方法api链接html文章页面this速度
1条回答
网友
1楼 · 发布于 2024-04-20 08:34:10

正如Tgr和所有人所说的,不,这样的功能不存在,因为它没有意义。第一页没有任何特殊的状态或歧义消除。在

关于现有的API,请参见https://www.mediawiki.org/wiki/Extension:Disambiguator#API_usage

顺便说一句,您链接的“bot策略”并不真正适用于crawler/scraper;唯一相关的策略/准则是User-Agent policy。在

相关问题 更多 >