Python 如何以编程方式为任何电视节目的剧集列表确定维基百科文章的URL

Python 如何以编程方式为任何电视节目的剧集列表确定维基百科文章的URL,python,web-scraping,wikipedia,Python,Web Scraping,Wikipedia,我正在写一个脚本,根据维基百科“X集列表”页面上的信息重命名文件,其中X是一个电视节目的名称。例:。我正在使用WikipediaAPI从文章中获取数据 我希望脚本能够处理任何可用的电视节目,但我不知道如何确定该节目是否有维基百科文章。给定您要搜索的节目标题,确定是否存在包含剧集列表的文章的最佳方法是什么?如果存在,则返回URL?我认为最好的方法可能是以某种方式浏览维基百科,并开发一个数据库/字典/哈希图,将显示链接到各自的文章URL,但我不知道如何做到这一点 我不能简单地猜测URL是什么,因为例

我正在写一个脚本,根据维基百科“X集列表”页面上的信息重命名文件,其中X是一个电视节目的名称。例:。我正在使用WikipediaAPI从文章中获取数据

我希望脚本能够处理任何可用的电视节目,但我不知道如何确定该节目是否有维基百科文章。给定您要搜索的节目标题,确定是否存在包含剧集列表的文章的最佳方法是什么?如果存在,则返回URL?我认为最好的方法可能是以某种方式浏览维基百科,并开发一个数据库/字典/哈希图,将显示链接到各自的文章URL,但我不知道如何做到这一点

我不能简单地猜测URL是什么,因为例如,Office有美国版本的文章和英国版本的单独文章,有时文章的URL不遵循标准格式,比如使用连词而不是情节的医生。 目前,为了测试一些基本的节目,我有一个硬编码字典:

shows = {"The Office" : "List_of_The_Office_(U.S._TV_series)_episodes", \
         "Breaking Bad" : "List_of_Breaking_Bad_episodes", \
         "Community" : "List_of_Community_episodes", \
         "Parks and Recreation" : "List_of_Parks_and_Recreation_episodes", \
         "Game of Thrones" : "List_of_Game_of_Thrones_episodes", \
         "Doctor Who (2005+)" : "List_of_Doctor_Who_serials", \
         "Adventure Time" : "List_of_Adventure_Time_episodes", \
         "Suits" : "List_of_Suits_episodes"}

显然,我不想为每一个可能的节目硬编码。任何建议都将不胜感激

在我看来,
节目名集列表
是你最好的选择,该页面是指向正确名称的重定向,这是一个重定向到消歧页面。

一个黑客方法是在谷歌上搜索“剧集列表”并使用第一个结果。虽然维基百科对这些事情有标准,但标准(a)有例外,(b)随着时间的推移而变化。因此,除了启发式,没有其他方法可以做到这一点。如果您发现了一些模式,那么如果您只是尝试每种模式直到其中一种成功,那么这些模式可能在90%的时间内都会匹配。或者,您可以尝试提出一组复杂的规则,以提供给推理机。或者你可以训练一个神经网络。或者…随便什么。但是没有办法做得更好。而且,听起来你试图解决的问题一开始是模棱两可的。“办公室有一篇美国版的文章,另一篇是英国版的文章。”所以,当你想要一个办公室的剧集时,你想要哪一个?@ Brand我想到了,但是在看如何做的时候,我看到你需要访问谷歌API,它限制了你能做多少搜索。如果我想发布这个脚本,有人能使用它吗?或者这是一个限制因素吗?@abarnert是的,确定你想要的是美国版本还是其他版本是另一个问题,但我认为这可以通过在字典中显示“办公室”的多个结果来解决,然后要求用户澄清他们想要哪个URL。我没有测试是否有重定向或消歧页面。谢谢你指出这一点。我敢打赌,仅仅使用这种格式作为初始猜测是可行的。