Python 如何使用selenium获取特定元素的html源代码?

Python 如何使用selenium获取特定元素的html源代码?,python,selenium,Python,Selenium,我正在查看的页面包含: <div id='1'> <p> text 1 <h1> text 2 </h1> text 3 <p> text 4 </p> </p> </div> 文本1文本2文本3文本4 我想获取div中的所有文本,除了中的文本。 (我想得到“文本1”、“文本3”和“文本4”) 可能有一些元素,或者根本没有。 而且可能有一些元素,甚至一个在另一个内部,或者没有 我想通过获取div的

我正在查看的页面包含:

<div id='1'> <p> text 1 <h1> text 2 </h1> text 3 <p> text 4 </p> </p> </div>
文本1文本2文本3文本4

我想获取div中的所有文本,除了
中的文本。 (我想得到“文本1”、“文本3”和“文本4”) 可能有一些
元素,或者根本没有。 而且可能有一些
元素,甚至一个在另一个内部,或者没有

我想通过获取div的所有html源代码,并使用正则表达式删除
元素来实现这一点。但是selenium.get_text不返回html,只返回文本(全部!)

我知道我可以使用selenium.get_html_source,然后用正则表达式查找我需要的元素,但这看起来像是浪费,因为selenium知道如何查找元素

有谁有更好的解决方案吗?
谢谢:)

使用jQuery怎么样

编辑:

首先,您必须添加所需的.JS文件,为此,请访问www.jQuery.com

然后,您只需调用一个简单的jQuery选择器:

alert($("div#1").html());

使用xpath。从
selenium.py

没有显式定位器前缀,Selenium使用以下默认策略:

  • \**dom**\,用于以“文档”开头的定位器
  • \**xpath**\,用于以“/”开头的定位器
  • \**标识符**\,否则为
就你而言,你可以试试

selenium.get_text("//div[@id='1']/descendant::*[not(self::h1)]")
您可以了解有关xpath的更多信息


另外,我不知道是否有适合python selenium的HTML文档,但我还没有找到;另一方面,
selenium.py
文件的docstring似乎构成了全面的文档。因此,我建议您查找源代码,以便更好地了解其工作原理。

以下代码将为您提供div元素中的HTML:

sel = selenium('localhost', 4444, browser, my_url)
html = sel.get_eval("this.browserbot.getCurrentWindow().document.getElementById('1').innerHTML")
然后您可以使用BeautifulSoup来解析它并提取您真正想要的内容


我希望这会有所帮助

在撰写本文时,选定的答案在Python 3中不起作用。相反,请使用以下命令:

from selenium import webdriver

wd = webdriver.Firefox()
wd.get(url)
return wd.execute_script('return window.document.getElementById('1').innerHTML')

我不知道jQuery。你能给我举个例子吗?谢谢对不起,我是这个网站的新手。。。你的意思是点击v,对吗?没问题。谢谢几周前我花了一些时间研究一个类似的问题,我很高兴知道它也解决了你的问题。那么直接从WebDriver获取它怎么样,例如,你有
wd=WebDriver.Firefox()
,我想从
wd
对象获取它