关于python中selenium获取不到跳转页面的当前url问题解决

本文介绍使用Selenium处理点击后打开新标签页的问题,详细解释如何定位元素并点击,之后如何正确切换到新标签页获取URL和HTML,适用于Python爬虫开发。

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

关于python中selenium获取不到跳转页面的当前url或是HTML问题解决

问题详述:
在selenium爬取带有js渲染的网页时,当某些网页点击跳转新的标签页后,通过采用url = browser.current_url来获取当前点击跳转后页面的url或是html时,对于某些网站可以获取,但是对于大部分网站都获取不了,只能获取主页面的url或是html代码;
问题可能是因为,对于某些网站来说,你即使点击了,或是输入回车键了,但是代码还停留来源主页,要进行代码中的切换;

问题解决:

网上查了好多,大多是获取点击不打开新标签的网页,(估计没有人那么闲,直接点击打开新标签后在进行selenium操作就好了,可是总会有各种各样的需求)其实问题解决也很简单,把用selenium切换到当前标签页:
代码段:

cssSelect = 'body > div.app.app--light'
wait = WebDriverWait(browser,10)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,cssSelect)))#等待加载
browser.find_element_by_css_selector(cssSelect).click()#用css选择器,找到元素按钮后点击,打开新标签
browser.switch_to.window(browser.window_handles[1])#切换当前页面标签
rul = browser.current_url#获取新标签url
html = browser.page_source#获取新标签html
在 PyCharm 中安装 Selenium 并运行代码时,如果发现浏览器没有正常跳转页面,可能是以下几个原因导致的问题: ### 可能的原因及解决办法 #### 1. **WebDriver 路径配置错误** - 如果 WebDriver 的路径未正确设置,则 Selenium 将无法找到对应的驱动程序(如 ChromeDriver 或 GeckoDriver),进而导致页面加载失败解决方法: 确保将正确的 WebDriver 放置到系统 PATH 下,或者直接通过 `webdriver.Chrome()` 指定驱动的绝对路径。例如: ```python from selenium import webdriver driver = webdriver.Chrome(executable_path='/path/to/chromedriver') ``` #### 2. **Selenium 版本与 WebDriver 不兼容** - 当前版本的 Selenium 和所使用的 WebDriver 驱动可能并不匹配。这会导致某些功能不可用。 解决方法: 升级或降级 Selenium 库以及对应浏览器的驱动至相互支持的版本,并检查官方文档确认兼容性: ``` pip install --upgrade selenium # 根据需要升级 chromedriver 到最新版 https://sites.google.com/a/chromium.org/chromedriver/downloads ``` #### 3. **脚本中有隐式等待时间不足** - 页面元素加载较慢可能导致 Selenium 执行命令之前还未完成初始渲染就试图操作某个不存在或尚未完全展示出来的控件。 解决方案: 添加显式的等待条件来确保关键内容已被成功载入再继续下一步动作: ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) element = wait.until(EC.presence_of_element_located((By.ID, 'myElement'))) ``` #### 4. **网页地址输入有误** - 直接访问的目标 URL 地址拼写上存在差错或者是无效链接都会造成最终结果为空白页的情况发生。 对策建议:再次核对实际请求的目标网址是否准确无误; 示例代码片段示例如下所示: ```python url = "https://www.example.com" driver.get(url) print("当前打开网站为:",driver.title ) if driver.current_url == url : print('已正确进入指定站点!') else: print(f"未能正常开启目标站 {url}") ``` ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值