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

BeautifulSoup find_all未获取全部元素,求问题排查与解决方法

问题原因及解决办法

原因分析

你的代码只获取到前两个链接就停止,核心问题是依赖next_element.next_element定位链接的方式完全不可靠:

  • 这种方式完全绑定HTML节点的相邻结构,网页中前两个<article>的相邻节点刚好是含链接的<a>标签,但后续<article>的相邻节点结构发生了变化,要么找不到带href属性的元素,要么触发AttributeError报错导致程序直接终止,因此只输出了前两个结果。

修改方案

直接在每个<article>标签内部,通过标签和类名精准定位目标链接(这是网页爬取的标准可靠方式),修改后的代码如下:

import requests
from bs4 import BeautifulSoup

url = "https://www.gelbeseiten.de/branchen/rechtsanwalt/mannheim"
req = requests.get(url)
src = req.text
soup = BeautifulSoup(src, "lxml")
all_firmas = soup.find_all("article", class_="mod mod-Treffer")
for firma in all_firmas:
    # 直接在article内部定位目标链接标签
    link_tag = firma.find("a", class_="Treffer-link")
    if link_tag:
        print(link_tag.get("href"))
print("Category done!")

修改说明

  1. 替换定位逻辑:用firma.find("a", class_="Treffer-link")替代依赖节点位置的next_element,直接通过标签和类名匹配目标链接,不受网页节点结构变化影响。
  2. 增加容错机制:添加if link_tag:的判断,避免因个别节点缺失链接导致程序报错终止,提升代码鲁棒性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:35:04