使用Selenium获取id_documento标签并拼接URL遇类型错误求助
问题分析与解决
你的代码存在几个关键问题,直接导致了字符串类型错误:
元素获取方式错误:
find_element仅返回匹配到的第一个元素,要抓取重复出现的标签,必须用复数形式find_elements- CSS选择器写法有误:如果是按id选择元素,需加
#前缀;如果是按自定义属性(比如元素带id_documento属性)选择,要写成[id_documento]
未提取元素的字符串值:
find_element返回的是WebElement对象,不是字符串,直接拼接URL必然触发类型错误,必须先提取元素的文本内容或目标属性值
变量名大小写不一致:
- 你定义的变量是
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
相关产品推荐
相关产品推荐

