Selenium(Python)- 获取页面完全加载后webdriver的page_source

2 投票
1 回答
2308 浏览
提问于 2025-04-18 04:19

我需要从一个动态页面获取数据(实际上有很多这样的页面)。我可以使用Python中的Selenium访问这个页面。不过,driver.page_source获取到的内容不完整。即使我尝试使用driver.implicitly_wait(100),也没有任何变化。

我还尝试了:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0

WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.LINK_TEXT, "Load all")))

虽然我看到了一些等待/暂停,时间足够让页面加载,但在等待之后,driver.page_source的内容没有任何变化。

这里有什么解决办法吗?

谢谢。

1 个回答

0

解决这个问题的方法是,如果你真的需要获取页面源代码,可以使用其他工具。Webdriver的 getPageSource 方法只会返回驱动程序最后访问的页面的某种状态和格式。

根据(Java)文档,其他语言可能也适用:

getPageSource

java.lang.String getPageSource()

获取最后加载页面的源代码。如果页面在加载后被修改过
(例如,通过Javascript),那么返回的文本并不能保证是修改后的页面内容。请查看你使用的特定驱动程序的文档,以确定返回的文本是否反映了页面的当前状态,或者是最后由web服务器发送的文本。返回的页面源代码是底层DOM的表现形式:不要指望它的格式或转义方式与web服务器发送的响应相同。可以把它想象成艺术家的印象。

Returns:
    The source of the current page

http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebDriver.html#getPageSource%28%29

撰写回答