Python Selenium读取Excel URL循环爬取商品价格报错求助
问题排查与解决步骤
1. 定位错误根源
这个报错的核心原因是你代码中把Pandas的Series对象(也就是DataFrame的整列数据)当成了可JSON序列化的类型使用,而Series本身不支持直接序列化。大概率是你读取URL时没有取到单个字符串,而是直接操作了整列数据。
2. 修正URL读取逻辑
确保循环时拿到的是单个URL字符串,而非整列Series:
方法一:遍历DataFrame的每一行
import pandas as pd from selenium import webdriver # 读取Excel文件 df = pd.read_excel("你的商品URL文件.xlsx") # 遍历每一行,提取单个URL for _, row in df.iterrows(): # 替换成你Excel中存储URL的列名 single_url = row["商品URL列名"] # 后续Selenium操作 driver = webdriver.Chrome() driver.get(single_url) # 爬取价格的逻辑... driver.quit()
方法二:把Series转成字符串列表再循环
urls_list = df["商品URL列名"].tolist() # 将整列转成字符串列表 for url in urls_list: driver.get(url) # 爬取价格的逻辑...
3. 排查其他序列化场景
如果修正后仍报错,检查代码中是否有json.dumps()相关操作,若需要序列化数据,要先把Series转成列表或字典:
- 错误示例:
json.dumps(df["商品URL列名"]) - 正确写法:
json.dumps(df["商品URL列名"].tolist())或json.dumps(row.to_dict())
4. 验证Excel数据格式
确认Excel中URL列是纯字符串格式,没有合并单元格、空值或格式异常。可以在循环中打印URL类型验证:
print(type(single_url)) # 正常应输出 <class 'str'>
内容的提问来源于stack exchange,提问作者Georgios Paschalidis
相关产品推荐
相关产品推荐

