2012-10-13 350 views
2

在JavaScript創建的頁面中傳遞給BeautifulSoup的頁面中的所有HTML的最佳方式是什麼?HTML標籤之間的硒

我目前使用:

from selenium import webdriver 
from selenium.common.exceptions import NoSuchElementException 
from selenium.webdriver.common.keys import Keys 

from BeautifulSoup import BeautifulSoup 

browser = webdriver.Firefox() 
browser.get("http://www.yahoo.co.uk") 
html = browser.find_elements_by_id("html") 

但 「HTML」 始終是一個空列表。我究竟做錯了什麼?

+0

Selenium幾乎可以處理BeautifulSoup所做的一切 - 您甚至可以直接訪問和操作JavaScript創建的對象。硒的結合與美麗的湯不完全不同。 – kreativitea

回答

2

HTML不是一個ID。它應該是這樣的:

html = browser.find_elements_by_tag_name("html") 

因爲html是一個標籤。

您最初所做的搜索將返回ID已設置爲「html」的所有元素。將返回的元素的一個示例:

<p id="html">Lorem ipsum</p> 

該元素的id爲「html」,標記名稱爲「p」。

2

您也可以使用類似

html_source = browser.page_source 

這是一個webdriver的提供的函數調用,精確地收集完整的源代碼或「讓所有的HTML頁面中的」

4

的正確方法通過網頁源從硒美麗的湯是:

from selenium import webdriver 
from selenium.common.exceptions import NoSuchElementException 
from selenium.webdriver.common.keys import Keys 

from BeautifulSoup import BeautifulSoup 

browser = webdriver.Firefox() 
browser.get("http://www.yahoo.co.uk") 
html_source = browser.page_source 
html = BeautifulSoup(html_source) 

這樣,瀏覽器加載頁面,提取完整的HTML源並將它傳遞給BeautifulSoup 。結果可以像任何其他美麗的湯對象一樣被解析。