【问题标题】:Why does locating elements by tag name returns empty string? (Not a duplicate post)为什么按标签名称定位元素返回空字符串? (不是重复的帖子)
【发布时间】:2020-03-25 01:38:41
【问题描述】:

所以,我正在尝试获取 h2 和 h3 标签的内容。这是代码(顺便说一句,这是在许多 div 中)

<div class="flex-container">
  <div class="number">
    <h2>interest</h2>
    <h3>$1285</h3>
  </div>
  <div class="number">
    <h2>Negative</h2>
    <h3>$981724</h3>
  </div>
  <div class="number">
    <h2>quote</h2>
    <h3>$43342</h3>
  </div>
  <div class="number">
    <h2>total</h2>
    <h3>$123456</h3>
  </div>
</div>

所以我尝试先复制 xpath:

container = driver.find_element_by_xpath('//*[@id="content"]/article/div/div/div/dl/dd[1]/div[1]') 

我通过在检查器上选择 div class="flex-containter.. 并右键单击,找到 xpath。

我的问题是,我一直在寻找 h2 和 h3 的内容时迷路,因为我不知道如何处理我获得的容器变量。我试过这个:

table = container.find_elements_by_tag_name('number')

但它返回了一个空列表,我现在只是猜测和检查。

你能帮我找到一个合适的文档来更好地引导我的注意力吗? 我的 HTML 看起来很简单,我可能把它复杂化了。任何帮助将不胜感激。 谢谢你。

【问题讨论】:

    标签: python-3.x selenium-webdriver web-scraping


    【解决方案1】:

    我不是使用 selenium 的专家,但我想您必须使用 find_elements_by_class_name 操作。您的 HTML 代码中没有标签“数字”。我猜你正在寻找类“数字”所指向的元素。 查看https://selenium-python.readthedocs.io/locating-elements.html

    【讨论】:

    • 谢谢。那行得通。我做了 table = container.find_elements_by_class_name('number')。然后为表中的帖子做了一个for循环:print(post.text)。它打印了所有那些 h2、h3 标签。
    • 如果此答案有助于解决您的问题,请单击答案旁边的复选标记将其标记为已接受。请参阅here 了解更多信息
    猜你喜欢
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 2013-10-26
    相关资源
    最近更新 更多