网页抓取:如何使用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
相关产品推荐
相关产品推荐

