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

使用Selenium爬取Letterboxd时无内容输出的技术问询

解决Letterboxd Selenium爬取无输出问题

你的代码存在几个关键问题导致无法获取内容:

  • 选择器完全错误:你写的driver.find_elements(By.CSS_SELECTOR, "frame")是在找frame元素,但Letterboxd的电影海报是放在class为film-poster的<a>标签里,页面根本不存在frame标签,所以永远找不到目标元素。
  • Headless模式易被反爬检测:单纯启用headless模式会被网站识别为爬虫,导致页面加载异常或内容不渲染。
  • 等待逻辑不够精准:隐式等待5秒无法确保所有海报元素加载完成,建议用显式等待针对目标元素做精准等待。

修正后的代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def search_letterboxd_by_genre(genre):
    url = f"https://letterboxd.com/films/genre/{genre}/"

    # 设置Chrome选项,规避headless检测
    options = webdriver.ChromeOptions()
    options.add_argument("--headless=new")  # 新版headless模式更接近正常浏览器
    options.add_argument("--disable-blink-features=AutomationControlled")
    options.add_argument("--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")
    driver = webdriver.Chrome(options=options)

    driver.get(url)

    # 显式等待海报元素加载完成,最多等10秒
    try:
        WebDriverWait(driver, 10).until(
            EC.presence_of_all_elements_located((By.CSS_SELECTOR, "a.film-poster"))
        )
    except:
        print("页面加载超时,未找到电影元素")
        driver.quit()
        return

    # 获取所有电影海报元素
    movie_elements = driver.find_elements(By.CSS_SELECTOR, "a.film-poster")

    if movie_elements:
        for movie_element in movie_elements:
            try:
                # 海报的img标签alt属性就是电影标题
                movie_title = movie_element.find_element(By.TAG_NAME, "img").get_attribute("alt")
                print(movie_title)
            except Exception as e:
                print(f"提取标题出错: {str(e)}")
    else:
        print("未找到该分类下的电影")

    driver.quit()

# 调用示例(比如爬取"drama"分类)
# search_letterboxd_by_genre("drama")

补充说明:

  • 替换为正确的CSS选择器a.film-poster定位电影海报容器
  • 添加反爬规避参数,让headless模式更接近正常浏览器行为
  • 用显式等待确保元素加载完成,避免因页面未加载完全导致的空结果
  • 优化异常捕获逻辑,输出具体错误信息方便排查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:54:51