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

网页抓取:如何使用BeautifulSoup从HTML片段中提取href属性?

实现方案

前置依赖

先安装需要的库:
pip install beautifulsoup4 requests

核心代码实现

步骤1:请求页面并初始化BeautifulSoup对象

import requests
from bs4 import BeautifulSoup

target_url = "https://www.notar.se/kopa-bostad?assignmentStatus=Kommande&assignmentStatus=Till%20salu&numberOfRoomsMin&numberOfRoomsMax&livingSpaceAreaMax"
# 配置请求头避免被反爬拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_5; rv:109.0) Gecko/20100101 Firefox/116.0"
}
resp = requests.get(target_url, headers=headers)
soup = BeautifulSoup(resp.text, "html.parser")

步骤2:提取href属性,提供两种稳定匹配方式

方式1:通过标签特征class匹配

目标a标签携带独有的v-card--link类,筛选精度高:

# 提取所有符合条件的a标签
a_tags = soup.find_all("a", class_="v-card--link")
for tag in a_tags:
    # 获取href属性值
    relative_href = tag.get("href")
    # 可选:拼接为完整可访问的绝对链接
    absolute_href = f"https://www.notar.se{relative_href}"
    print(relative_href, absolute_href)
方式2:通过href路径规则匹配(更稳定)

目标房产详情页的href统一以/kopa-bostad/objekt/开头,用正则匹配可以过滤其他无关链接:

import re

a_tags = soup.find_all("a", href=re.compile(r"^/kopa-bostad/objekt/"))
for tag in a_tags:
    print(tag.get("href"))

注意事项

  • 该站点为Vue构建的单页应用,如果直接请求静态HTML未获取到目标标签,说明内容是前端动态渲染的,需要改用Selenium、Playwright等工具渲染完整页面后再解析。
  • 提取前可增加判空逻辑if tag.get("href"):避免空值报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:42:01