如何使用 Selenium 和 Python 查找元素内部的元素?

n_b*_*n_b 5 html css python selenium-webdriver

我无法弄清楚返回此 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>
Run Code Online (Sandbox Code Playgroud)

我尝试过的是driver.find_elements_by_tag_name('div.calibre.div')并且还使用了 ('div.calibre .div') | ('div.calibre + div')它们的其他变体。我已经设法返回页面中的所有 div 元素,但我只想返回嵌套在calibre类中的所有元素(即 book、titlepage、book 和 book)。有没有办法做到这一点?

fra*_*ima 5

如果只有一个元素具有“calibre”类,并且它正是您需要的元素,您可以执行以下操作:

driver.find_element_by_class_name('calibre').find_elements_by_tag_name('div')
Run Code Online (Sandbox Code Playgroud)

当您执行driver.find_element_by_class_name('calibre')(或任何其他driver.find...与此相关的函数)时,该调用将返回一个与驱动程序具有相同方法的对象。换句话说,您可以像浏览整个网页一样浏览网页的一部分。

在这种情况下,driver.find_element_by_class_name('calibre')将返回网页的一部分,其中包含类为“calibre”的 de 元素及其所有子元素。要访问它的 div,您应该使用 进行导航find_elements_by_tag_name