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

Python爬虫保存数据到.xlsx提示格式或扩展名无效问题求助

问题修复方案

错误原因

  • XLSX是二进制压缩的结构化文件格式,无法通过open()直接写入纯文本内容,这是你打开文件报错的核心原因。
  • 之前CSV格式异常是因为你直接拼接字符串写入,没有按CSV规范添加分隔符,也未做特殊字符清洗。

前置依赖安装

运行修复代码前先执行命令安装xlsx导出依赖:
pip install openpyxl

修复后代码

from selenium import webdriver
from bs4 import BeautifulSoup as Soup
from urllib.request import urlopen
import datetime as dt
import pandas as pd
import re

# 定义文本清洗函数,剔除特殊字符、不可见字符
def clean_text(text):
    # 保留中英文、数字、常见常规标点,过滤乱码、特殊符号
    return re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9,。、;:""''()()【】\[\].,;:!?@#$%^&*_\-+=<>/\\|\s]', '', text).strip()

driver = webdriver.Firefox(executable_path='C://Downloads//webdrivers//geckodriver.exe')

# 存储所有抓取到的有效数据
data_list = []
# 定义导出表头
columns = ["product_name", "price", "URL"]

for c in range(1):
    a = f'https://www.flipkart.com/search?q=sony+headphones&as=on&as-show=on&otracker=AS_Query_HistoryAutoSuggest_1_4_na_na_na&otracker1=AS_Query_HistoryAutoSuggest_1_4_na_na_na&as-pos=1&as-type=HISTORY&suggestionId=sony+headphones&requestId=ad797917-16ae-401e-98df-1c79a43d40c3&as-backfill=on&page={c}'
    driver.get(a)
    page_soup = Soup(urlopen(a), 'html5lib')
    container = page_soup.find_all('div', {'class': '_4ddWXP'})
    for containers in container:
        find_url = containers.find('a')['href']
        new_url = 'https://www.flipkart.com' + find_url
        driver.get(new_url)
        page_source = driver.page_source
        page_soup = Soup(page_source, 'html.parser')
        try:
            product_name = clean_text(page_soup.find('span', {'class': 'B_NuCI'}).text.strip())
            price = clean_text(page_soup.find('div', {'class': "_30jeq3 _16Jk6d"}).text.strip())
            current_url = new_url
            data_list.append([product_name, price, current_url])
        except:
            print('当前商品数据获取失败,跳过')

# 构造结构化表格直接导出xlsx
df = pd.DataFrame(data_list, columns=columns)
file_name = 'amazon_data_' + dt.datetime.now().strftime("%d_%b_%y_%I_%M_%p") + '.xlsx'
df.to_excel(file_name, index=False, engine='openpyxl')

# 关闭浏览器进程
driver.quit()

修复说明

  1. 新增文本清洗逻辑,自动过滤所有特殊字符、乱码、不可见字符,保证输出内容干净
  2. 取消直接写文件的错误逻辑,改为先存储全部有效数据,最后通过pandas导出标准xlsx格式,自动匹配三列表头,无需手动处理单元格格式
  3. 修复原代码中冗余循环、异常捕获后变量未定义可能触发的隐性报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:39:04