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

如何获取爬虫实际访问的网页地址?现有代码修改咨询

解决爬虫跳转后识别实际访问地址的问题

嘿,这个场景太常见了!你现在的代码直接读取了响应内容,但没保留urlopen返回的响应对象——而这个对象恰恰能帮你拿到实际跳转后的地址。

核心修改点

urlopen()返回的响应对象有个geturl()方法,它会返回最终实际访问的URL(不管经历了多少次HTTP重定向)。你只需要先把响应对象存下来,再调用这个方法就行。

修改后的完整代码示例

from urllib.request import Request, urlopen
from bs4 import BeautifulSoup

# 假设l是你的目标链接
target_url = "https://example.com/your-target-link"

req = Request(target_url, headers={'User-Agent': 'Mozilla/5.0'})
# 先保存响应对象,不要直接read()
response = urlopen(req)
# 获取实际跳转后的地址
actual_url = response.geturl()

# 对比目标地址和实际地址,判断是否发生跳转
if actual_url != target_url:
    print(f"⚠️ 页面发生跳转!原目标地址:{target_url},实际访问地址:{actual_url}")

# 再读取页面内容进行后续解析
html_page = response.read()
soup = BeautifulSoup(html_page, "html.parser")  # 记得指定解析器,避免警告

额外说明

  • 这个方法能处理HTTP 301/302这类常见的重定向,urlopen会自动跟随重定向,geturl()直接给你最终的终点地址。
  • 如果需要查看重定向的详细信息(比如跳转次数、响应头里的Location字段),可以用response.info()来获取响应头内容,但大部分场景下geturl()就足够满足你的需求了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:12:15