You need to enable JavaScript to run this app. Python爬虫用BeautifulSoup提取文本导出CSV仅含表头无数据求助
优惠活动
大模型
产品
解决方案
定价
更多

Python爬虫用BeautifulSoup提取文本导出CSV仅含表头无数据求助

问题定位与解决方案

核心问题原因

  • 请求标识不规范导致结果不一致:requests默认使用python-requests/版本号作为客户端标识,极易被网站的反爬规则识别。运行测试代码阶段,网站返回了完整的产品列表;运行导出代码阶段,请求被拦截,返回的空页面仅保留了id=archive-product的外层容器,不存在任何带class=product-h2的产品子元素,导致循环遍历不到内容,存储产品的列表为空,最终生成的CSV仅包含表头。
  • 测试代码存在逻辑隐患:测试代码中将print(row.get_text())的结果赋值给字典键,而print函数本身没有有效业务返回值,只会返回None。这种写法仅能在控制台打印内容,实际存入字典的值是空值,属于爬虫开发新手的典型混淆点。
  • 文本提取未做基础清洗:即使成功获取到元素内容,row.get_text()会直接保留元素内的大量连续换行、前后多余空格,不做处理的话导出的CSV单元格会充满无效空白,可读性极差。

修正后可直接运行的代码

import requests
from bs4 import BeautifulSoup
import csv

# 模拟正常浏览器的请求头,规避基础反爬规则
REQUEST_HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}
TARGET_URL = "https://intanseafood.com/demersal-fish"

# 发送带请求头的GET请求,设置超时避免程序无响应
response = requests.get(TARGET_URL, headers=REQUEST_HEADERS, timeout=15)
# 主动校验请求状态,遇到4xx/5xx错误直接抛出异常
response.raise_for_status()

soup = BeautifulSoup(response.content, "html5lib")
product_list = []

# 定位产品列表外层容器
product_container = soup.find("div", attrs={"id": "archive-product"})
# 容器定位失败时直接退出,避免后续调用触发空对象报错
if not product_container:
    print("未定位到产品列表容器,请检查页面结构或反爬规则")
    exit()

# 遍历所有产品条目
for product_item in product_container.findAll("div", attrs={"class": "product-h2"}):
    # 清理文本:去除前后空白,替换连续换行、多空格为有效内容
    clean_name = product_item.get_text(strip=True).replace("\n", "").replace("  ", "")
    product_list.append({"product": clean_name})

# 导出CSV,指定UTF-8编码避免打开乱码
output_file = "demersal.csv"
with open(output_file, "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=["product"])
    writer.writeheader()
    for item in product_list:
        writer.writerow(item)

print(f"导出完成,共写入{len(product_list)}条产品数据")

实操注意事项

  • 不要对目标网站发起连续高频请求,否则会持续触发反爬拦截,可以在每次请求后增加1-2秒的随机延时,降低请求频率。
  • 网站前端结构调整时,需要重新检查元素的class、id属性,避免因页面改版导致元素定位失效。
  • 导出CSV时将编码改为utf-8-sig,可以更好兼容Windows系统下直接用Excel打开时的特殊字符、中文乱码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 10:27:00