我使用Python绑定来运行Selenium WebDriver:

from selenium import webdriver
wd = webdriver.Firefox()

我知道我可以像这样抓取一个webelement:

elem = wd.find_element_by_css_selector('#my-id')

我知道我可以得到整页的源代码…

wd.page_source

但是是否有一种获取“元素源”的方法?

elem.source   # <-- returns the HTML as a string

Python的Selenium WebDriver文档基本上不存在,我在代码中没有看到任何支持该功能的东西。

访问一个元素(及其子元素)的HTML的最佳方法是什么?


当前回答

使用execute_script get html

bs4(BeautifulSoup)也可以快速访问html标签。

from bs4 import BeautifulSoup
html = adriver.execute_script("return document.documentElement.outerHTML")
bs4_onepage_object=BeautifulSoup(html,"html.parser")
bs4_div_object=bs4_onepage_object.find_all("atag",class_="attribute")

其他回答

在PHP Selenium WebDriver中,你可以像这样获得页面源代码:

$html = $driver->getPageSource();

或者像这样获取元素的HTML:

// innerHTML if you need HTML of the element content
$html = $element->getDomProperty('outerHTML');

我希望这能有所帮助: http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebElement.html

下面介绍Java方法:

java.lang.String    getText() 

但不幸的是,它在Python中不可用。因此,您可以将方法名称从Java转换为Python,并尝试使用现有方法的另一种逻辑,而无需获得整个页面的源代码……

E.g.

 my_id = elem[0].get_attribute('my-id')

当然,我们可以用下面的脚本在Selenium Python中获得所有的HTML源代码:

elem = driver.find_element_by_xpath("//*")
source_code = elem.get_attribute("outerHTML")

如果你想保存到文件:

with open('c:/html_source_code.html', 'w') as f:
f.write(source_code.encode('utf-8'))

我建议保存到一个文件,因为源代码非常非常长。

更新了2022硒检索HTML

首先,下载Selenium WebDriver的Python绑定。

可以从Selenium包的PyPI页面执行此操作。 或者,也可以使用pip来安装Selenium包。Python 3.6在标准库中提供了pip。

方法1

读取innerHTML属性以获得元素内容的源。innerHTML是DOM元素的属性,它的值是开始标记和结束标记之间的HTML。

例如,下面代码中的innerHTML属性包含值" text "

<p>
a text
</p>
element.get_attribute('innerHTML')

方法2

读取outerHTML以获得带有当前元素的源代码。outerHTML是一个元素属性,其值是开始和结束标记之间的HTML以及所选元素本身的HTML。

例如,代码的outerHTML属性携带了一个包含div和span的值。

<div>
<span>Hello there!</span>
</div>
ele.get_atrribute("outerHTML")

InnerHTML将返回所选元素内部的元素,outerHTML将返回所选元素的内部HTML

例子:

现在假设您的Element如下所示

<tr id="myRow"><td>A</td><td>B</td></tr>

innerHTML元素输出

<td>A</td><td>B</td>

outerHTML元素输出

<tr id="myRow"><td>A</td><td>B</td></tr>

生活例子:

http://www.java2s.com/Tutorials/JavascriptDemo/f/find_out_the_difference_between_innerhtml_and_outerhtml_in_javascript_example.htm

下面你会发现语法需要根据不同的绑定。根据需要将innerHTML更改为outerHTML。

Python:

element.get_attribute('innerHTML')

Java:

elem.getAttribute("innerHTML");

如果你想要整个页面的HTML,使用下面的代码:

driver.getPageSource();