2012-10-13 164 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 。结果可以像任何其他美丽的汤对象一样被解析。