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

请求带锚点(#)的链接返回HTTP 400,如何用Python获取200状态?

解决带锚点URL请求返回400的问题

核心原因

HTTP协议里,URL的锚点(#及后续内容,即Fragment)不会被发送到服务器,它只用于浏览器端定位页面内元素。直接在请求路径中包含#会被部分服务器判定为非法URL,从而返回400错误。

正确处理方式

  1. 请求不带锚点的原始URL:直接用能返回200状态的/path/linktoRealEstate/details发起请求,获取完整页面内容。
  2. 本地解析页面定位锚点内容:拿到页面后,解析HTML找到id="realestate-index"的元素,这就是锚点指向的目标内容。

Python代码示例

使用http.client的实现

import http.client
from bs4 import BeautifulSoup  # 需提前安装:pip install beautifulsoup4

conn = http.client.HTTPSConnection("www.website.com")
my_link = "/path/linktoRealEstate/details"
# GET请求无需请求体,直接传入headers即可
conn.request("GET", my_link, headers=headers)

response = conn.getresponse()
if response.status == 200:
    html_content = response.read().decode("utf-8")
    # 解析HTML定位锚点元素
    soup = BeautifulSoup(html_content, "html.parser")
    target_element = soup.find(id="realestate-index")
    print(target_element.prettify() if target_element else "未找到锚点对应元素")
else:
    print(f"请求失败,状态码:{response.status}")
conn.close()

使用requests库的简化实现(更推荐)

import requests
from bs4 import BeautifulSoup

url = "https://www.website.com/path/linktoRealEstate/details"
response = requests.get(url, headers=headers)
if response.status_code == 200:
    soup = BeautifulSoup(response.text, "html.parser")
    target_element = soup.find(id="realestate-index")
    print(target_element.prettify() if target_element else "未找到目标元素")
else:
    print(f"请求失败,状态码:{response.status_code}")

特殊场景处理

如果是单页应用这类依赖锚点加载内容的场景,需要用浏览器自动化工具模拟真实浏览器行为:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()  # 需提前配置ChromeDriver
driver.get("https://www.website.com/path/linktoRealEstate/details#realestate-index")
# 定位锚点元素
target_element = driver.find_element(By.ID, "realestate-index")
print(target_element.get_attribute("outerHTML"))
driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:20:05