【问题标题】:Download only the required part of a webpage on IMDB using Python使用 Python 仅下载 IMDB 上网页的所需部分
【发布时间】:2017-08-10 15:27:21
【问题描述】:

我正在尝试通过浏览带有电影名称的 csv 文件并下载电影封面图片并将其存储在本地来从 IMDB 检索电影图像。而不是下载整个网页,然后选择所需的部分(图像元素)。

有没有办法只找到浏览器发送的“获取”请求以检索图像?

我能够获取 URL,但似乎没有一种模式可以迭代循环并不断下载图像。

这是玩具总动员 1 的获取请求:

这是玩具总动员 3 的获取请求:

我能够删除“@”之后的所有字符并仍然获得图像,因为它们是图像的大小选项。

【问题讨论】:

  • 你不能只获取图像标签,遍历它们,提取 url,然后从你收集的 url 中下载所有图像吗?
  • 在那种情况下,我最初会下载整个网页对吗?
  • 是的,是 html 部分,而不是浏览器通常会执行的其他文件(js、css、图像等)。
  • 当浏览器加载 IMDB 页面时,它会为它获取 html 和所有链接的内容,即 html 本身链接的 javascript、css、图像和其他媒体文件。如果您使用的是 python-requests,那么这是一个无头浏览器。它不获取链接的内容,而只获取实际的 html。

标签: python web-scraping beautifulsoup python-requests imdb


【解决方案1】:

您可以使用OMDB API。通过查询该 API,您可以在 JSON 响应中获得大量信息,包括指向其封面图像的链接。例如,搜索玩具总动员:

{“标题”:“玩具总动员”,

"年份":"1995",

...

“海报”:“https://images-na.ssl-images-amazon.com/images/M/MV5BMDU2ZWJlMjktMTRhMy00ZTA5LWEzNDgtYmNmZTEwZTViZWJkXkEyXkFqcGdeQXVyNDQ2OTk4MzI@._V1_SX300.jpg”,

...

“响应”:“真”}

我已经将它用于我的Movie Indexer,尽管是在 Java 中,如果你想看看它是如何工作的。

【讨论】:

  • 我将在一个多线程程序中迭代 9000 部电影的列表,在任何情况下我都会被阻止发出太多请求吗?
  • 我不确定。我不这么认为,但这是一个尝试的问题。 9000 个请求对于该 API 来说并不多
猜你喜欢
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
相关资源
最近更新 更多