You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python DataFrame中添加IMDB电影缩略图以适配Power BI

修复IMDB电影缩略图爬取代码的方案

问题分析

原代码存在两个核心问题:

  1. 未定义image_url变量就直接调用,会触发NameError
  2. 没有定位到IMDB页面中电影主缩略图的具体元素

修复后的代码

import requests
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
import time

# 初始化存储图片链接的列表
images = []
# 模拟浏览器请求头,避免被IMDB反爬拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

# 遍历DataFrame中的每一个电影链接
for url in df_database_url['Url Film']:
    try:
        # 发送请求,添加延迟避免频繁请求被封
        time.sleep(1)
        r = requests.get(url, headers=headers)
        r.raise_for_status()  # 捕获HTTP请求错误
        
        soup = BeautifulSoup(r.content, "html.parser")
        # 定位IMDB电影主缩略图(匹配当前IMDB页面的主图元素类)
        img_element = soup.find("img", class_="ipc-image--base ipc-image--poster-l ipc-image--loaded")
        if img_element and "src" in img_element.attrs:
            # 处理图片链接,移除尺寸限制参数以获取清晰缩略图
            image_url = img_element["src"].split("@._V1_")[0] + "@._V1_.jpg"
            images.append(image_url)
        else:
            # 找不到图片时添加空值
            images.append(np.nan)
    except Exception as e:
        # 捕获请求或解析错误,添加空值并打印错误信息
        print(f"处理链接 {url} 时出错: {str(e)}")
        images.append(np.nan)

# 将图片链接列表添加为DataFrame的新列
df_database_url['电影缩略图链接'] = images
# 导出为CSV用于Power BI
df_database_url.to_csv("带缩略图的电影数据库.csv", index=False, encoding="utf-8-sig")

关键优化点

  • 添加请求头:模拟浏览器身份,规避IMDB反爬拦截
  • 增加异常处理:捕获请求失败、元素缺失等问题,防止程序崩溃
  • 定位准确HTML元素:匹配当前IMDB页面的主缩略图类选择器
  • 处理图片链接格式:移除尺寸参数,确保获取清晰的标准缩略图
  • 添加请求延迟:避免短时间高频请求导致IP被封禁

内容的提问来源于stack exchange,提问作者rufina_mar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:55:37