python - 使用 selenium 重定向到新页面后如何抓取新的刷新数据
问题描述
我正在使用 python 进行数据抓取工作,我想在单击重定向按钮后抓取新的重定向页面数据。
这是我尝试过的代码。
browser = webdriver.Firefox()
browser.get("https://www.cbsl.gov.lk/en/statistics/economic-indicators")
window_before = browser.window_handles[0]
print(window_before)
browser.find_element_by_xpath('/html/body/div[2]/div[3]/div/div/div/div/div/div/div/div/div/div/div/div/div/div/div/div[4]/div[2]/p[1]/a').click()
window_after = browser.window_handles[1]
browser.switch_to_window(window_after)
print(window_after)
bs_obj = BSoup(browser.page_source,'lxml')
table = bs_obj.find("table", id="statTB")
print(table)
这将重定向到新页面。但在打印表格后它没有显示任何内容。我认为它仍在旧页面上尝试。
解决方案
不会。当您切换到新窗口时,browser.page_source
会返回新窗口的 HTML,但您可能需要等到 requiredtable
出现在 DOM 中:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
...
browser.switch_to_window(window_after)
table = WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.ID, "statTB")))
print(table.text)
推荐阅读
- javascript - 将 express-session 生成的会话 ID cookie 发送到不同来源的 React 前端
- python-3.x - 发出 Python PUT 请求时的 HTTP 405
- javascript - 如何使用弹出模式显示我的每个 ViewModel 项目的不同内容?
- amazon-web-services - AWS .Net API - 提供的令牌已过期
- python - 用于注册帐户和登录的 Python 程序
- python - 迭代器类不递增值 Python
- reactjs - 在 react-testing-library 中使用“screen”找不到任何东西
- reactjs - 使用 mern 堆栈和 socket.io 的聊天应用程序在发送超过 20 条消息后变慢
- python - 为直方图定义 3D bin 与 1D bin 时的不同注意事项?
- swift - swiftUI中的旋转动画性能不佳