网络抓取 IMDB 以获得最佳电影和节目
已发表: 2020-12-08您想知道有史以来排名前 250 的电影是什么吗? 还是小屏幕上最好的喜剧节目? 对于与电影和节目世界相关的所有此类答案、评论、评级和琐事,世界各地的人们都使用 IMDB,这是此类信息的在线数据库。 虽然信息由粉丝更新,但数据库本身由亚马逊的子公司拥有和运营。 它最初于 1990 年作为数据库创建,并于 1993 年移至网络。虽然任何人都可以访问网站上的信息,但如果您想对事实进行编辑或添加评论,则必须进行注册。 在这篇博客中,我们将了解如何使用 Python 完成网络抓取 IMDB 数据。
除了为电影和小屏幕节目更新的各种数据点之外,IMDB 还允许其用户添加评级,这些评级构成了多个列表的基础,电影爱好者和其他人使用这些列表来创建他们的观看列表。 虽然 IMDB 不提供 API 来查询其数据,但它允许您以文本格式下载数据。 您还可以使用 DIY 代码抓取数据。
IMDB 数据的 Web 抓取是如何完成的?
我们将从 IMDB 中抓取 2 组数据
一个)。 IMDB 前 250 部电影
乙)。 IMDB 前 250 名电视节目
我们将为这些列表中的每部电影或节目抓取某些数据点。 您可能不想一次抓取所有数据,因此我们提供了更改参数值的选项,以仅提取前 n 个结果。
在开始之前,您需要 Python3.7 或更高版本以及 BeautifulSoup 依赖项和文本编辑器。 然后,您可以使用 python 命令本身运行下面给出的代码。 不需要用户输入,因为我们已经硬编码了前面在代码中提到的两个列表的链接。
在代码中,我们有 3 个具体的功能
一个)。 get_top_rated_imdb_hits - 这是执行开始的地方。 作为该函数的输入,我们传递相关列表的 URL。 它可以是电影列表 URL 或电视节目列表 URL。 我们还传递了我们想要结果 JSON 的文件的名称和我们想要的顶级结果的数量。 我们获取某些数据点,例如网页本身可用的电影名称和评分,然后绕过电影/节目特定 URL 调用 get_extra_details 函数来获取额外数据点。
乙)。 get_web_page_content- 该函数用于获取传入其中的 URL 的 HTML 内容,并将其转换为易于解析的 BeautifulSoup 对象。 这个对象就是这个函数返回的。
C)。 get_extra_details - 此函数使用由 get_top_rated_imdb_hits 函数传递给它的电影或节目特定 URL 来获取更多详细信息,例如摘要、顶级明星的姓名以及排名列表网页中不可用的导演信息。



如您所见,我们调用了函数 get_top_rated_imdb_hits 两次,一次使用电影 URL,一次使用电视节目 URL。 我们也将计数传递为 2,因为我们只想要两个列表中前两个候选人的数据。 运行此代码后,您将看到在您的目录中创建了两个文件 - “movies.json”和“tv_shows.json”。
我们提取的数据点
对于每部电影或电视节目,我们提取了这些数据点。
一个)。 特定节目/电影的 IMDB 链接
乙)。 秩
C)。 姓名
d)。 年
e)。 收视率
F)。 概括
G)。 导向器
H)。 作家
一世)。 星星
需要注意的一点是,并非每部电影或节目的所有数据点都可用,但任何可用的数据点都将被废弃。 下面的 JSON 显示了我们在运行上面的代码时获得的 IMDB 中前 250 部电影列表中的前 2 部电影。


虽然我们已经按原样抓取数据并对数据本身进行了最小的更改。 您可以进一步清理数据以使数据点更可用。 几个例子是
一个)。 去掉年份的括号。
乙)。 将评分分为 2 个单独的数据点,评分和提交评分的人数。
下面的 JSON 显示了我们从第二个网页中提取的前 2 个电视节目。 由于那里有许多这样的网络抓取工具。 让我们看看如何从他们的网站上为不同的电视节目抓取 IMDB 数据。 下面的代码是如何完成的详细说明。

虽然我们从每个列表中只提取了 2 个。 您可以允许代码为所有 250 个节目或电影运行,并创建一个巨大的 JSON 文件。 您甚至可以将提取的数据存储在数据库中。 但是为了在这么多链接上运行代码。 在网络抓取 IMDB 数据时,您需要遵循一些最佳实践并牢记一些限制。
约束和最佳实践
如果您运行此代码并将“nos”的值更改为 250,并在所有 250 部电影和电视节目中运行该代码。 该网站很有可能会检测到来自您 IP 的自动流量,而您最终会被阻止。 您将需要使用 IP 轮换等工具。 您还可以在抓取每个 URL 的 HTML 内容之间创建几秒钟的等待时间。
至于你抓取的数据,即使它的大部分内容都是由志愿者创建的。 数据的商业用途可能存在某些限制。 无论您使用从不同网页抓取的数据,都需要遵守规定。 这就是使用 Python 抓取 IMDB 数据的方式。
但是,如果您想要一个无忧无虑的网络抓取体验,有人负责处理数据并且您可以专注于您的核心业务模型,我们PromptCloud的团队将为您服务。 我们为自己处理一切事务的 DaaS 解决方案感到自豪。 从抓取到访问抓取的数据。
如果您喜欢上面的内容,我们相信您也想阅读此内容。 请在下面的评论部分留下您的宝贵意见。
