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

Python爬取阿尔及利亚医疗网站数据为空问题求助

问题排查与修复方案

核心问题分析

你的代码生成空表,主要是元素查找的语法错误和类名/属性名拼写错误导致无法正确提取数据:

  • 属性名写法错误:BeautifulSoup查找属性时无需加下划线,你写的href_、itemprop_应改为href、itemprop
  • 类名拼写错误:专长标签的类名是specialite,你写成了speciliate,导致无法匹配元素
  • 固定href匹配错误:医疗人员类别链接的href并非统一为/filter/type/me,固定匹配会漏掉大部分数据
  • 缺少元素存在性判断:find方法找不到元素时返回None,直接调用.text会触发报错,导致数据收集中断
  • 缩进问题:原代码中if块内的代码未正确缩进,这会引发语法错误(你能运行大概率是粘贴时格式混乱)

修正后的代码

import os
import requests
from bs4 import BeautifulSoup
import pandas as pd

URL = 'https://annumed.sante-dz.com/annuaire'

response = requests.get(URL)

if response.status_code == 200:
    soup = BeautifulSoup(response.content, 'html.parser')
    
    # 查找所有医疗人员信息容器
    elements = soup.find_all('div', class_='element')
    
    professionnels = []
    specialites = []
    categories = []
    adresses = []
    
    # 遍历提取数据
    for element in elements:
        # 提取姓名
        nom = element.find('h3')
        professionnels.append(nom.text.strip() if nom else None)
        
        # 提取专长
        spec = element.find('span', class_='tag specialite')
        specialites.append(spec.text.strip() if spec else None)
        
        # 提取类别(匹配tags区域的a标签)
        cat = element.find('div', class_='tags').find('a', class_='tag')
        categories.append(cat.text.strip() if cat else None)
        
        # 提取地址
        addr = element.find('div', itemprop='addressLocality')
        adresses.append(addr.text.strip() if addr else None)
    
    # 构建DataFrame并保存
    data = {
        'Professionnel': professionnels,
        'Spécialité': specialites,
        'Catégorie': categories,
        'Adresse': adresses
    }
    df = pd.DataFrame(data)
    
    save_path = r'C:\Users\LENOVO\Desktop\scraping_sante'
    os.makedirs(save_path, exist_ok=True)
    excel_filename = os.path.join(save_path, 'professionnels_sante.xlsx')
    df.to_excel(excel_filename, index=False)

    print(f"Données extraites et enregistrées dans {excel_filename}")
else:
    print(f"La requête a échoué avec le code d'état : {response.status_code}")

额外说明

当前代码仅能提取网站第一页的数据,若需要爬取所有医疗人员信息,需分析分页链接的规律,循环请求每一页的URL并重复提取逻辑。

内容的提问来源于stack exchange,提问作者Wiam.07 Lazazi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:17:38