执行Python网页爬虫后生成的CSV文件无有效数据,附对应实现代码
导出空CSV的核心问题根因
代码跑完没有任何有效数据落盘,是三个硬缺陷叠加导致的:
- 链接采集环节从根源失效
原代码拼接链接时硬截断url[:31]的逻辑本身就有设计漏洞,加上定位俱乐部链接的CSS选择器完全匹配不上当前页面结构,最终收集到的links列表长度为0,后续遍历详情页提取数据的循环根本不会执行,自然没有数据能写入CSV。 - 字段提取选择器全量过期
代码里写的.rn_nummer、td[itemprop="athlete"]、td.rechts.hauptlink等选择器,已经和Transfermarkt迭代后的页面结构不匹配,就算拿到有效链接,提取到的所有字段列表都是空值。 - 数据维度错配导致DataFrame全空
原有代码靠find_next("td")、find_all_next("td")[1]做偏移取数的逻辑经常错位,各字段提取出来的列表长度不一致,pandas拼接出来的DataFrame全是NaN,导出的CSV看起来就像没有任何有效数据。
针对性修正方向
- 去掉无意义的URL硬截断逻辑,直接把站点根域名和采集到的相对路径拼接成完整可访问的链接,同时替换已经失效的链接选择器,每采集完一批链接就打印总数,确保链接列表不是0值。
- 增加页面节点存在性判断:如果
target = soup.find("table", class_="items")返回None,直接跳过当前链接,避免空对象调用属性抛出异常导致全流程中断。 - 逐行校验每个字段提取出来的列表长度,保证所有列元素数一致后再做zip拼接,避免长度不匹配导致的全列空值。
- 给请求环节加简单的重试逻辑,避免被站点临时反爬拦截拿到空响应。
内容的提问来源于stack exchange,提问作者Ozil
相关产品推荐
相关产品推荐

