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

如何在Django中读取网页X-Frame-Options头部并解决报错

解决X-Frame-Options头部获取的错误问题

第一个错误的原因与修复

你写的res.headers['content-type':'X-Frame-Options']误用了Python切片语法(冒号),但requests返回的headers是类字典结构,只能通过单个键获取对应头部值,且你仅需要X-Frame-Options,完全不需要涉及content-type。

第二个错误的原因与修复

并非所有网站的HTTP响应都会携带X-Frame-Options头部,直接用res.headers['X-Frame-Options']访问不存在的键会触发KeyError。正确做法是使用字典的get()方法安全获取,当头部不存在时返回默认值(如None)。

修正后的完整代码

for result in result_listings:
    result_title = result.find(class_='PartialSearchResults-item-title').text
    result_url = result.find('a').get('href')
    result_desc = result.find(class_='PartialSearchResults-item-abstract').text

    res = requests.get(result_url)
    # 安全获取X-Frame-Options头部,不存在则返回None
    x_frame_option = res.headers.get('X-Frame-Options')
    # 直接判断并赋值给notAccept,无需中间变量
    notAccept = x_frame_option in ["DENY", "SAMEORIGIN"]

额外注意事项

  • requests的headers对象不区分大小写,用'X-Frame-Options'或'x-frame-options'作为键都有效,推荐使用规范的驼峰写法。
  • 爬取第三方网站时建议添加超时设置,比如requests.get(result_url, timeout=10),避免请求长时间卡住拖垮服务。
  • 部分网站会有重定向行为,可通过res.history查看重定向记录,确保检查的是最终目标页面的响应头部。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:05:11