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

使用Selenium获取id_documento标签并拼接URL遇类型错误求助

问题分析与解决

你的代码存在几个关键问题,直接导致了字符串类型错误:

  1. 元素获取方式错误:

    • find_element仅返回匹配到的第一个元素,要抓取重复出现的标签,必须用复数形式find_elements
    • CSS选择器写法有误:如果是按id选择元素,需加#前缀;如果是按自定义属性(比如元素带id_documento属性)选择,要写成[id_documento]
  2. 未提取元素的字符串值:

    • find_element返回的是WebElement对象,不是字符串,直接拼接URL必然触发类型错误,必须先提取元素的文本内容或目标属性值
  3. 变量名大小写不一致:

    • 你定义的变量是Document,但拼接URL时用的是document,Python对大小写敏感,这会导致变量未定义错误

修正后的代码示例

场景1:id_documento是元素的id属性

比如页面中有多个<div id="id_documento">xxx</div>这类元素:

# 获取所有重复的id_documento元素
documents = driver.find_elements(By.CSS_SELECTOR, '#id_documento')

# 遍历元素,提取文本并拼接URL
for doc_element in documents:
    doc_text = doc_element.text  # 提取元素的文本内容
    url = 'https://download' + doc_text + 'default'
    print(url)  # 按需做后续处理

场景2:id_documento是元素的自定义属性

比如页面中有多个<div id_documento="123">...</div>这类元素:

# 获取所有带有id_documento属性的元素
documents = driver.find_elements(By.CSS_SELECTOR, '[id_documento]')

# 遍历元素,提取属性值并拼接URL
for doc_element in documents:
    doc_id = doc_element.get_attribute('id_documento')  # 提取属性值
    url = 'https://download' + doc_id + 'default'
    print(url)  # 按需做后续处理

额外提示

  • 尽量避免使用绝对XPATH(/html/body/div[4]/...),页面结构变动时会直接失效,改用相对路径或更稳定的选择器
  • 若仅需单个元素,用find_element即可,但你的需求是抓取重复标签,必须用find_elements

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:27:10