爬虫问题-Selenium- 没有text 方法 报错问题排查

博主在使用Selenium爬虫时遇到了问题,发现在4.1.5版本下无法复现特定bug,而降级到3.14.0版本后问题得到解决。尽管如此,bug的具体原因尚不清楚,有待进一步分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

爬虫问题–遇到Selenium一部分原因是包的版本问题:

Selenium报错问题排查:
1、selenium版本:4.1.5.很是遗憾,未能复现原bug。‘dict’ object has no attribute ‘text’
在这里插入图片描述
2、selenium版本:3.14.0,使用老版本的时候搞定了,但是还是不知道原因,待日后分析吧。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import socket from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import * # ================== 配置区 ================== CHROMEDRIVER_PATH = r"D:\tools\chromedriver\chromedriver.exe" TARGET_URL = "https://www.autohome.com.cn/rank/1-1-0-0_9000-x-1-x/2025-02.html" MAX_RANK = 50 # 抓取前5名 TIMEOUT = 10 # 页面加载超时时间(秒) # =========================================== def check_network(): """检查网络连通性""" try: socket.create_connection(("www.baidu.com", 80), timeout=5) return True except OSError: return False def setup_driver(): """初始化浏览器(Selenium 3.x写法)""" if not check_network(): raise ConnectionError("❌ 网络连接异常,请检查网络后重试") try: options = webdriver.ChromeOptions() options.add_argument("--disable-infobars") driver = webdriver.Chrome( executable_path=CHROMEDRIVER_PATH, options=options ) driver.maximize_window() print("✅ 浏览器启动成功") return driver except WebDriverException as e: print(f"🚨 浏览器启动失败: {str(e)}") print("常见原因:") print(f"1. 驱动路径: {CHROMEDRIVER_PATH}") print("2. Chrome是否安装") print("3. 版本是否匹配") return None def scrape_car_rank(driver): """抓取汽车排名数据""" try: print(f"🌐 正在加载页面: {TARGET_URL}") driver.get(TARGET_URL) # 修正后的关键行 WebDriverWait(driver, TIMEOUT).until( EC.presence_of_element_located((By.CSS_SELECTOR, "div.rank-list")) ) print("⏳ 页面加载完成,开始解析数据...") for rank in range(1, MAX_RANK + 1): try: item_selector = f'div[data-rank-num="{rank}"]' car_item = WebDriverWait(driver, TIMEOUT).until( EC.presence_of_element_located((By.CSS_SELECTOR, item_selector), name = car_item.find_element_by_css_selector("div.tw-text-nowrap").text.strip() score = car_item.find_element_by_css_selector("span.tw-text-\\[#FF6600\\] > strong").text.strip() price = car_item.find_elements_by_css_selector("div.tw-font-medium")[-1].text.strip() print(f"🏆 第{rank}名: {name}") print(f" 评分: {score} | 价格区间: {price}\n") except TimeoutException: print(f"⚠️ 第{rank}名车型加载超时") except NoSuchElementException as e: print(f"⚠️ 第{rank}名数据解析失败: {str(e)}") except TimeoutException: print("⏳ 页面整体加载超时") except Exception as e: print(f"❌ 发生未知错误: {str(e)}") if __name__ == "__main__": print("=" * 40) print("🚗 汽车之家排行榜数据抓取程序启动") print("=" * 40) driver = setup_driver() if not driver: exit(1) try: scrape_car_rank(driver) finally: driver.quit() print("✅ 浏览器已正常关闭")运行以上代码后报错D:\test\venv\Scripts\python.exe D:\test\lunwen\carnumb-2025-02.py File "D:\test\lunwen\carnumb-2025-02.py", line 66 EC.presence_of_element_located((By.CSS_SELECTOR, item_selector), ^ SyntaxError: '(' was never closed Process finished with exit code 1
03-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值