python selenium 当网页跳到另一个blank时,怎么爬取
时间: 2024-10-20 12:15:04 浏览: 11
当使用Selenium在Python中遇到页面跳转到空白页(通常表示一个新的tab或window打开)的情况时,你可以采取以下步骤来继续爬取:
1. **等待新窗口/标签打开**:
使用`WebDriverWait`和`ExpectedConditions`来确定新页面已经完全加载。这可以通过检测URL的变化或特定元素的存在来实现。
```python
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
# 假设你在原来的窗口中有一个元素,如按钮
button = driver.find_element_by_id('open_new_tab')
# 点击按钮并等待新页面加载
driver.execute_script("arguments[0].click();", button)
wait = WebDriverWait(driver, 10) # 设置超时时间
wait.until(EC.url_changes(current_url)) # 等待URL变化
new_url = driver.current_url # 获取新的URL
```
2. **切换到新窗口或标签**:
获得新窗口或标签的句柄后,可以调用`switch_to.window()`或`switch_to.frame()`来切换到它。
```python
windows = driver.window_handles
driver.switch_to.window(windows[-1]) # 如果有多个窗口,选择最后一个打开的
```
3. **开始爬取新页面**:
在新窗口或标签中找到要爬取的目标元素,并执行相应的操作。
```python
target_element = driver.find_element(By.XPATH, "//html/body")
# 现在你可以对这个元素进行任何你想做的操作,比如抓取文本、属性等
content = target_element.text
```
阅读全文