2016-03-10 27 views
4

我使用selenium來點擊我想要的網頁,然後使用beautifulsoup解析網頁。有人顯示how to get innerHTML of an element in a selenium driver。有沒有辦法讓整個頁面的html?由於如何在selenium驅動中獲取整個頁面的innerHTML?

在示例代碼python (基於上面的帖子,語言似乎沒有太大的關係)

from selenium import webdriver 
from selenium.webdriver.support.ui import Select 
from bs4 import BeautifulSoup 

url = 'http://www.google.com' 
driver = webdriver.Firefox() 
driver.get(url) 

the_html = driver---somehow----.get_attribute('innerHTML') 
bs = BeautifulSoup(the_html, 'html.parser') 

回答

6

要獲得的innerHTML整個頁面:

from selenium import webdriver 
driver = webdriver.Firefox() 
driver.get("http://stackoverflow.com") 
html = driver.page_source 

要得到身體的innerHTML:

from selenium import webdriver 
driver = webdriver.Firefox() 
driver.get("http://stackoverflow.com") 
html = driver.execute_script("return document.body;") 

要得到innerHTML的一個元素:

from selenium import webdriver 
driver = webdriver.Firefox() 
driver.get("http://stackoverflow.com") 
element = driver.find_element_by_id("hireme") 
html = driver.execute_script("return arguments[0].innerHTML;", element) 

要獲得的innerHTML與get_attribute元素:

from selenium import webdriver 
driver = webdriver.Firefox() 
driver.get("http://stackoverflow.com") 
element = driver.find_element_by_id("hireme").get_attribute('innerHTML') 
+0

感謝@florentbr。對於OP中提到的一個元素,似乎有一個更簡單的答案:'element.get_attribute('innerHTML')'----對同一事物做出答案,或者哪一個更強大/更靈活? –

+0

我忘了這個屬性是可能的。我會說它完全一樣,可能稍微快一點,但我更喜歡execute_script,因爲我通常需要應用一些正則表達式,而且它在Javascript中更容易。 –

0

使用頁面對象:

@FindBy(xpath = "xapth") 
private WebElement element; 

public String getInnnerHtml() { 
    System.out.println(waitUntilElementToBeClickable(element, 10).getAttribute("innerHTML")); 
    return waitUntilElementToBeClickable(element, 10).getAttribute("innerHTML") 
} 
相關問題