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

使用BeautifulSoup + Python提取div内所有href链接时仅获取到第一个链接的问题

解决BeautifulSoup仅提取第一个链接的问题

我来帮你搞定这个问题!你的代码只输出第一个链接,是因为links.find('a')这个方法只会返回第一个匹配到的<a>元素,所以每次循环都只能拿到第一个链接的href。要提取所有链接,你需要用能返回全部匹配结果的方法,这里有两种简单可行的解决方案:

方法一:嵌套遍历所有匹配的a标签

先定位到目标div,再用find_all('a')获取该div下的所有链接标签,接着遍历输出每个链接的href:

classroomLinks = soup.find_all("div", {"class": "main_class"})
for div in classroomLinks:
    # 获取当前div下的所有<a>标签
    all_a_tags = div.find_all('a')
    for link in all_a_tags:
        print(link['href'])

方法二:用CSS选择器一步到位(更简洁)

直接通过CSS选择器定位所有在.main_class下的<a>标签,省去嵌套循环的步骤,代码更简洁高效:

# 选择所有class为main_class的div内部的a标签
all_links = soup.select("div.main_class a")
for link in all_links:
    print(link['href'])

简单总结下:find()方法的作用是“找到第一个匹配元素”,而find_all()和select()(当选择器匹配多个元素时)会返回所有符合条件的元素列表,所以要提取所有链接,就需要用后两者拿到结果列表,再遍历列表输出每个元素的href属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:12:31