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

Python+BeautifulSoup如何从href属性获取完整的绝对链接?

问题解答

可以通过BeautifulSoup配合Python内置工具实现完整链接的提取,不需要手动拼接URL,也不会出现你提到的路径拼接错误问题。

核心原理

你之前的拼接逻辑出错,是因为没有区分两类相对路径的规则:

  • 以/开头的路径为站点根相对路径,需要拼接在站点域名之后
  • 不以/开头的路径为当前页面路径相对路径,需要拼接在当前页面的上级路径之后

手动判断两类路径的成本很高,Python标准库urllib.parse中的urljoin方法已经实现了和浏览器完全一致的路径拼接逻辑,最终生成的结果和鼠标悬停显示的完整链接完全相同。

实现代码示例

依赖导入

from bs4 import BeautifulSoup
import requests
from urllib.parse import urljoin

核心提取逻辑

# 替换为当前访问的完整页面URL,必须带http/https协议前缀
current_page_url = "https://columbiabasinhospital.org/patients-visitors/advance-directives/"
# 请求当前页面
response = requests.get(current_page_url)
soup = BeautifulSoup(response.text, "html.parser")

# 遍历所有带href属性的a标签
for a_tag in soup.find_all("a", href=True):
    # 自动生成正确的绝对链接
    full_url = urljoin(current_page_url, a_tag["href"])
    # 后续可对full_url进行爬取逻辑处理
    print(full_url)

注意事项

  • 传入urljoin的当前页面URL必须携带完整的http://或https://协议头,否则会导致拼接结果异常
  • 该方法会自动识别href为完整外链、根相对路径、当前路径相对路径的三类情况,无需额外做判断处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:45:04