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

Python网页爬取求助:从Pandas DataFrame的URL提取演员并生成新表

Python爬取Letterboxd电影演员并生成关联DataFrame

步骤1:安装所需依赖

执行以下命令安装必要的Python库:

pip install requests beautifulsoup4 pandas

步骤2:准备初始数据

先将你提供的电影数据转为初始Pandas DataFrame:

import pandas as pd

# 初始数据
data = {
    "Date": ["2020-04-06", "2020-04-07"],
    "Name": ["Knives Out", "Pulp Fiction"],
    "Year": [2019, 1994],
    "Letterboxd URI": ["https://boxd.it/jWEA", "https://boxd.it/29Pq"],
    "Rating": [4.0, 5.0]
}
df_initial = pd.DataFrame(data)

步骤3:编写爬取演员的函数

通过requests获取页面内容,用BeautifulSoup解析演员列表:

import requests
from bs4 import BeautifulSoup

def get_movie_cast(letterboxd_url):
    # 模拟浏览器请求,避免被反爬
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    }
    response = requests.get(letterboxd_url, headers=headers)
    soup = BeautifulSoup(response.text, "html.parser")
    
    # 提取演员列表(若页面结构更新,需调整选择器)
    cast_items = soup.select(".cast-list .cast-item a")
    cast_list = [item.get_text(strip=True) for item in cast_items if item.get_text(strip=True)]
    
    return cast_list

步骤4:生成目标DataFrame

遍历初始数据,关联演员、电影名称和评分:

# 存储结果的列表
result_data = []

for _, row in df_initial.iterrows():
    movie_name = row["Name"]
    rating = row["Rating"]
    cast_list = get_movie_cast(row["Letterboxd URI"])
    
    # 每个演员对应一行数据
    for actor in cast_list:
        result_data.append({
            "Actor": actor,
            "Movie": movie_name,
            "Rating": rating
        })

# 转为DataFrame
df_result = pd.DataFrame(result_data)
print(df_result.head())

注意事项

  • Letterboxd页面结构可能变动,若爬取失败需检查并更新元素选择器
  • 频繁爬取易触发反爬,建议添加time.sleep(2)这类延迟操作
  • 遵守网站爬虫规则,避免违规操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:01:20