如何使用 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 在元素中查找元素?的主要内容,如果未能解决你的问题,请参考以下文章

grep或在元组中搜索字符串 - python

Python:在元组列表和嵌套列表中比较并查找匹配项

使用 Selenium 和 Python,如何检查按钮是不是仍然可点击?

如何使用 python 和 Selenium 将 cookie 保存在浏览器中

如何使用Selenium和Python下载图像

如何使用 Python 和 Selenium 进行分页抓取页面