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

Anbima网站爬虫遇TypeError:datetime.timedelta无len()方法,求解决

解决Anbima爬虫中日期输入的TypeError问题

错误原因分析

你碰到的TypeError: object of type 'datetime.timedelta' has no len(),本质是把timedelta对象直接传给了Selenium的send_keys方法。send_keys只接受字符串/数字这类可序列化的输入,而timedelta是时间间隔对象,Selenium内部处理时尝试获取它的长度,自然就报错了。问题出在你错误地将timedelta(days=1)赋值给了日期变量,而非先计算出圣保罗时区的前一天日期再转成字符串。

正确实现步骤(圣保罗时区)

下面是两种可靠的实现方式,核心是先拿到正确时区的当前日期,计算前一天,再格式化为输入框需要的字符串格式(比如DD/MM/YYYY,需根据Anbima网站的输入格式调整):

方式1:使用Python 3.9+内置的zoneinfo(推荐)

from datetime import datetime, timedelta
from zoneinfo import ZoneInfo
from selenium.webdriver.common.by import By
from selenium import webdriver

# 获取圣保罗时区的当前日期(仅取日期部分,排除时间)
tz = ZoneInfo("America/Sao_Paulo")
current_date = datetime.now(tz).date()
# 计算前一天日期
previous_date = current_date - timedelta(days=1)
# 格式化为网站要求的字符串,示例为DD/MM/YYYY,可根据实际调整
date_str = previous_date.strftime("%d/%m/%Y")

# 定位输入框并输入日期
driver = webdriver.Chrome()
# 替换为Anbima网站日期输入框的实际定位方式(ID/XPath/CSS选择器)
date_input = driver.find_element(By.ID, "your-date-input-id")
date_input.send_keys(date_str)

方式2:使用pytz(兼容Python旧版本)

如果你的Python版本低于3.9,用pytz处理时区:

from datetime import datetime, timedelta
import pytz
from selenium.webdriver.common.by import By
from selenium import webdriver

tz = pytz.timezone("America/Sao_Paulo")
current_date = datetime.now(tz).date()
previous_date = current_date - timedelta(days=1)
date_str = previous_date.strftime("%d/%m/%Y")

# 后续输入逻辑同方式1
driver = webdriver.Chrome()
date_input = driver.find_element(By.ID, "your-date-input-id")
date_input.send_keys(date_str)

其他日期减一天的实现方式

如果需要处理跨月、跨年这类复杂场景(比如1月1日减一天要得到去年12月31日),可以用dateutil的relativedelta:

from dateutil.relativedelta import relativedelta

# 替换之前的timedelta写法即可
previous_date = current_date - relativedelta(days=1)
date_str = previous_date.strftime("%d/%m/%Y")

注意事项

  • 确认Anbima网站日期输入框的格式要求(比如是YYYY-MM-DD还是DD/MM/YYYY),调整strftime的参数即可。
  • 尽量只取date()部分,避免时间(比如时分秒)干扰输入逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:40:57