首页 > 解决方案 > 提取 IMDb 电影图像

问题描述

我目前正在做一个小项目,使用推荐系统创建我自己的 IMDb 搜索引擎版本。我想在我的数据集中有 img 源以供以后使用,我在尝试获取 src 链接时遇到了一些麻烦。我想要的是所有 img src 的列表,这样我就可以将它拍到我的数据集上。这就是我到目前为止所拥有的。

images = []
for i in ddf['link']:
    r = requests.get(i)
    soup = BeautifulSoup(r.content, "html.parser")
    link = soup.find(itemprop="image")
    if link is None:
        images.append(np.nan)
    else:
        images.append(link.attrs['src'])

我尝试运行它大约 5 个小时,但没有给出任何结果。请让我知道我的代码中是否有任何错误,甚至是更好的获取它们的方法。

标签: pythonweb-scrapingbeautifulsoup

解决方案


这是假设 ddf['link'] 包含电影页面(例如,https: //www.imdb.com/title/tt0120338/)的一种方法。

如果电影页面有海报,则抓取海报,或者返回空值。

import requests
from bs4 import BeautifulSoup
import numpy as np

images = []
for i in ddf['link']:
    r = requests.get(i)
    soup = BeautifulSoup(r.content, "html.parser")
    try:
      image_url = page_html.find('div', class_='poster').img['src']
    except:
      image_url = np.nan
    images.append(image_url)

如果你想监控这个过程,你可以有打印语句并清除输出。

例如,

import requests
from bs4 import BeautifulSoup
import numpy as np
from IPython.core.display import clear_output

images = []

for i in ddf['link']:
  r = requests.get(i)
  soup = BeautifulSoup(r.content, "html.parser")
  try:
    image_url = page_html.find('div', class_='poster').img['src']
  except:
    image_url = np.nan
  images.append(image_url)
  print(image_url)
  clear_output(wait=True)

推荐阅读