Python使用Selenium爬取数据存入字典提示无法赋值给字面量如何解决
错误原因
抛出“无法赋值给字面量”错误的直接原因是Python字典赋值语法使用错误:Python字典通过键存取值必须使用**方括号[]**包裹键,你代码里写的titledic{items} = items.text误用了大括号{},不符合Python语法规则,解释器无法识别该表达式,直接抛出语法错误。
另外你的代码还存在一个隐藏问题:没有导入webdriver模块,修正语法错误后运行会直接报webdriver未定义的异常。
修复要点
- 补全缺失的导入语句:添加
from selenium import webdriver - 修正字典赋值语法:将赋值处的大括号替换为方括号
- 不建议直接把Selenium定位到的WebElement元素对象作为字典键:元素对象本身没有业务标识意义,建议用遍历索引、新闻链接、新闻id这类可哈希、有实际含义的值作为键
修正后可运行代码
from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.by import By titledic = {} browser = webdriver.Chrome() browser.get('https://www.cbc.ca/news') browser.implicitly_wait(10) result = browser.find_elements(By.CLASS_NAME, 'card-content-top') # 以遍历序号为键存储对应标题文本 for index, item in enumerate(result): titledic[index] = item.text # 打印验证抓取结果 print(titledic) # 用完浏览器记得退出释放资源 browser.quit()
扩展优化
如果需要让存储的数据更实用,可以抓取每条卡片对应的跳转链接作为键,标题作为值,后续查询使用更方便:
for item in result: title_text = item.text # 抓取卡片内的跳转链接 news_link = item.find_element(By.TAG_NAME, 'a').get_attribute('href') titledic[news_link] = title_text
内容的提问来源于stack exchange,提问作者New coder
相关产品推荐
相关产品推荐

