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
对象获取它