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

Web Scraping问题:发送POST请求时出现404 Not Found错误

解决POST请求返回404的问题

核心问题分析

你遇到的404错误主要源于两个关键点:

  • POST目标URL错误:你将请求发送到了页面展示的URL(horarios.html),但网站表单实际提交的目标是后端处理接口,而非这个页面地址。
  • 缺少必要请求头:服务器会验证请求是否来自合法浏览器,缺失关键头信息会被判定为非法请求,返回错误。

修复步骤

  1. 确认正确的POST接口
    打开浏览器开发者工具(F12)切换到「网络」标签,手动在网站提交一次搜索,找到类型为POST的请求,查看它的真实请求URL。该网站的表单实际提交地址大概率是https://www.ssa.ingenieria.unam.mx/horarios(去掉.html后缀)。

  2. 添加必要请求头
    至少需要添加User-Agent模拟浏览器请求,可额外加上Referer表明请求来源页面,降低被拦截的概率。

  3. 验证表单参数完整性
    检查开发者工具里的表单数据,确保payload包含所有提交参数,比如是否有隐藏字段需要一并发送。

修正后的代码

import requests

# 注意:此处为表单实际提交的后端接口URL,而非页面展示URL
url = "https://www.ssa.ingenieria.unam.mx/horarios"

def get_html_response(clave):
    # 添加模拟浏览器的请求头
    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',
        'Referer': 'https://www.ssa.ingenieria.unam.mx/horarios.html'
    }
    
    payload = {
        'optHorarioAsignatura': 'clave',
        'clave': clave
    }
    
    # 发送POST请求时携带请求头
    response = requests.post(url, data=payload, headers=headers)
    return response.text

# 测试调用
print(get_html_response("1858"))

额外提示

  • 如果问题仍存在,检查开发者工具中的请求方法(确认是POST)、编码方式(application/x-www-form-urlencoded为requests默认格式,无需修改)。
  • 部分网站会要求CSRF令牌,若表单中存在csrf_token类隐藏字段,需先GET页面提取令牌,再加入payload一同提交。

内容的提问来源于stack exchange,提问作者Carlos Odette DLCL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 11:38:18