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

使用Python的Beautiful Soup爬取IMDB时无法找到指定href链接

解析IMDB页面找不到指定href的问题排查

一、代码本身的语法错误

你提供的代码存在两处明显问题:

  • 变量赋值语法错误:page(requests.get(url)) 缺少赋值符号,正确写法应为 page = requests.get(url)
  • 未处理请求异常与属性存在性:直接遍历所有<a>标签并读取href,会遇到无href属性的标签导致报错;同时未验证请求是否成功(IMDB有反爬机制,可能直接返回403状态码)

修正后的基础代码示例:

import requests
from bs4 import BeautifulSoup

url = "https://www.imdb.com/title/tt0068112/?ref_=fn_al_tt_1"
# 添加UA头避免被识别为爬虫
page = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"})
if page.status_code != 200:
    print(f"请求失败,状态码:{page.status_code}")
else:
    soup = BeautifulSoup(page.content, "html.parser")
    # 先判断标签是否包含href属性再输出
    for a in soup.find_all('a'):
        if 'href' in a.attrs:
            print(a['href'])

二、页面动态加载导致链接缺失

即便修正代码,你仍可能找不到目标href,核心原因是:IMDB部分页面内容通过JavaScript动态渲染。requests只能获取服务器返回的静态HTML源码,而目标剧集列表链接(/title/tt0068112/episodes?ref_=tt_eps_sm)是页面加载完成后由JS动态插入的,因此静态源码中不存在该链接。

可行的解决方法:

  • 使用支持JS渲染的工具(如selenium、playwright),模拟浏览器完整加载页面后再解析内容
  • 直接拼接目标URL:IMDB剧集页面格式固定,可通过主页面ID(tt0068112)直接拼接出https://www.imdb.com/title/tt0068112/episodes?ref_=tt_eps_sm,无需从页面提取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:18:24