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

使用Beautiful Soup爬取德国中小企业中心数据返回空列表求助

解决Python爬虫返回空列表的问题

核心问题排查与修复方案

1. 请求被网站拦截(缺失浏览器标识)

多数网站会拦截无User-Agent的请求,导致返回空页面或错误响应。需要给请求添加浏览器头模拟正常访问。

2. 元素选择器与页面结构不匹配

原代码中使用的div.linkblock、span.ort等选择器可能已失效,需重新核对目标页面的实际HTML结构。

3. 未处理元素为空的异常

直接调用.text.strip()会因元素不存在报错,需先判断元素是否存在再提取内容。

修改后的完整代码

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 添加浏览器请求头,模拟正常访问
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}

url = "https://www.mittelstand-digital.de/MD/Redaktion/DE/Artikel/Mittelstand-4-0/mittelstand-40-kompetenzzentren.html"

# 发起请求并验证状态
response = requests.get(url, headers=headers)
if response.status_code != 200:
    print(f"请求失败,状态码:{response.status_code}")
    exit()

soup = BeautifulSoup(response.text, 'html.parser')

themen_list = []
branchen_list = []
ort_list = []
ansprechpartner_list = []

# 按页面实际容器类提取数据(若原选择器失效,需根据页面结构调整)
for center in soup.find_all('div', class_='teaser'):
    # 提取主题
    themen = center.find('h3')
    themen_list.append(themen.text.strip() if themen else '无数据')
    
    # 提取行业领域
    branchen = center.find('p', class_='text')
    branchen_list.append(branchen.text.strip() if branchen else '无数据')
    
    # 提取地点(若原ort类失效,替换为页面实际类名)
    ort = center.find('span', class_='location')
    ort_list.append(ort.text.strip() if ort else '无数据')
    
    # 提取联系人(若结构变化,调整选择器)
    ansprechpartner = center.find('span', class_='ansprechpartner')
    ansprechpartner_list.append(ansprechpartner.text.strip() if ansprechpartner else '无数据')

# 整理数据并写入Calc表格
data = {
    'Themen': themen_list,
    'Branchen': branchen_list,
    'Ort': ort_list,
    'Ansprechpartner': ansprechpartner_list
}

df = pd.DataFrame(data)
df.to_excel('kompetenzzentren.ods', index=False)
print("数据已成功写入表格")

调试技巧

  • 打印soup.prettify()查看返回的HTML结构,确认选择器是否正确
  • 单独测试选择器:比如先执行print(soup.find_all('div', class_='linkblock')),检查是否能获取到目标元素
  • 若页面为JS动态渲染,需改用Selenium替代requests抓取动态内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:41:09