LinkedIn学术爬取项目触发'str'无'text'属性AttributeError求助
报错直接根因
AttributeError: 'str' object has no attribute 'text'的触发点在代码中对linkedin_urls变量的重复错误操作:
- 第一次执行
linkedin_urls = [url.text for url in linkedin_urls]时,变量存储的初始内容是Selenium返回的WebElement对象列表,取每个元素的.text属性是合法操作,执行完成后变量已经被替换为纯字符串组成的URL列表。 - 后续代码跳转访问固定LinkedIn个人页后,又重复执行了一次完全相同的列表推导
linkedin_urls = [url.text for url in linkedin_urls],此时迭代的每个元素都是字符串类型,字符串不存在.text属性,直接触发报错。
其余连带逻辑隐患(修复上述报错后会依次出现的问题)
- 头部存在无效语法字符:
import csv行末尾多了两个多余的反引号标识,直接运行会触发Python语法解析错误 - Google页面跳转URL缺少二级域名点号:
driver.get('https:www.google.com')会被浏览器解析为无效路径,需修正为driver.get('https://www.google.com') - 旧版Selenium定位方法已废弃:
find_element_by_class_name、find_elements_by_class_name这类写法在Selenium 4.3+版本中已完全移除,需替换为find_element(by=By.CLASS_NAME, value='对应类名')的兼容写法 - 执行流程顺序错误:
driver.quit()被放置在页面源码赋值、xpath提取逻辑之前,会导致浏览器未完成解析就被强制关闭,后续所有依赖驱动获取页面内容的逻辑都会失效 - XPath选择器过时:代码中引用的LinkedIn页面类名是2020年前后的旧版前端标识,目前LinkedIn前端已多次迭代类名,直接使用旧选择器会提取到空值
- CSV写入模式不兼容Python3:代码中使用
open(parameters.file_name, 'wb')的二进制写入模式,Python3下写CSV文本需使用'w'模式,配合newline=''参数即可,否则会抛出格式编码错误 - 字段校验函数逻辑颠倒:当前
validate_field函数的判断分支写反,实际逻辑为“只要字段有值就替换为'No results'”,和预期的空值填充逻辑完全相反
直接报错的最小修复方案
删除访问固定LinkedIn个人页后重复执行的列表推导行linkedin_urls = [url.text for url in linkedin_urls]即可解决当前报错。
内容的提问来源于stack exchange,提问作者aziz bhy
相关产品推荐
相关产品推荐

