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

时间:2014-04-26 03:21:49

标签: python selenium web-scraping

我必须从动态页面获取数据(事实上很多都是这样)。我可以使用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 :(得分:0)

解决方案是使用其他东西来抓取页面源,如果你真的需要它。 Webdrivers'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