如何使用 Selenium 和 Python 在元素中查找元素?
Posted
技术标签:
【中文标题】如何使用 Selenium 和 Python 在元素中查找元素?【英文标题】:How do I find elements inside of elements using Selenium with Python? 【发布时间】:2020-02-12 11:26:55 【问题描述】:我不知道返回这个 html 示例中特定元素的语法。
<div class="calibre" id="calibre_link-0">
<div class="book" title="Chapter 11. Web Scraping">
<div class="titlepage">
<div class="book">
<div class="book">
<h1 class="title1"><a id="calibre_link-2915" class="firstname"></a>Web Scraping</h1>
</div>
</div>
</div>
我尝试过的是driver.find_elements_by_tag_name('div.calibre.div')
并且也在使用
('div.calibre .div') | ('div.calibre + div')
和其他变体。我已经设法返回页面中的所有 div 元素,但我只想返回嵌套在 calibre 类中的所有元素(即书籍、标题页、书籍和书籍)。有没有办法做到这一点?
【问题讨论】:
答案属于答案帖子,而不是问题帖子。请回滚将答案添加到这篇文章中。您可以通过单击“已编辑”然后单击“编辑”来获取未格式化的答案文本以获取最新版本。但是,如果另一个建议的问题的答案可以回答您的问题,请不要回答,而是单击以同意您的问题与其重复。 【参考方案1】:如果只有一个具有“calibre”类的元素并且它是您需要的,您可以这样做:
driver.find_element_by_class_name('calibre').find_elements_by_tag_name('div')
当您执行driver.find_element_by_class_name('calibre')
(或任何其他driver.find...
函数)时,该调用返回一个与驱动程序具有相同方法的对象。换句话说,您会得到一个网页,您可以像浏览整个网页一样浏览网页。
在这种情况下,driver.find_element_by_class_name('calibre')
将返回网页的一部分,其中包含类为“calibre”的 de 元素以及所有子元素。要访问它的 div,您应该使用 find_elements_by_tag_name
导航它。
【讨论】:
以上是关于如何使用 Selenium 和 Python 在元素中查找元素?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Selenium 和 Python,如何检查按钮是不是仍然可点击?