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

BeautifulSoup技术问题:如何获取标题对应的精准链接URL

获取标题与对应精准链接的解决方案

我来帮你搞定这个问题!你当前的代码只抓取了<h2>标签本身,但实际上文章的链接通常是嵌套在<h2>内部的<a>标签里的。咱们只需要调整一下逻辑,从每个h2里提取对应的a标签信息就行,还得注意处理相对链接的问题,确保拿到的是完整可访问的URL。

修改后的代码

from bs4 import BeautifulSoup
import requests
from requests.compat import urljoin  # 用来拼接相对链接和域名

# 请求页面
url = "http://www.prothom-alo.com/"
response = requests.get(url)
response.raise_for_status()  # 确保请求成功,避免后续解析出错
soup = BeautifulSoup(response.text, "lxml")

# 遍历所有h2标签
for h2_tag in soup.find_all("h2"):
    # 找到h2内部的a标签
    link_tag = h2_tag.find("a")
    if link_tag:
        # 获取标题文本(strip()去掉多余的空格换行)
        title = link_tag.get_text(strip=True)
        # 获取链接,用urljoin拼接成完整URL(处理相对路径)
        full_link = urljoin(url, link_tag.get("href"))
        # 输出标题+链接的组合
        print(f"标题: {title}")
        print(f"链接: {full_link}")
        print("---")  # 分隔线,方便阅读

关键说明

  • 提取a标签:通过h2_tag.find("a")定位h2内部的链接元素,这是获取标题和链接的核心。
  • 处理相对链接:有些网站的href是相对路径(比如/latest/12345),直接使用会无法访问,urljoin会自动把它和网站域名拼接成完整的URL。
  • 异常处理:加了if link_tag:的判断,避免遇到没有嵌套a标签的h2时抛出错误。
  • 文本清理:get_text(strip=True)会把标题里的多余空格、换行符去掉,让输出更整洁。

如果需要把结果保存成结构化数据(比如列表或字典),可以调整代码如下:

results = []
for h2_tag in soup.find_all("h2"):
    link_tag = h2_tag.find("a")
    if link_tag:
        results.append({
            "title": link_tag.get_text(strip=True),
            "link": urljoin(url, link_tag.get("href"))
        })

# 打印所有结构化结果
for item in results:
    print(item)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:18:41