【问题标题】:HTML Selector using python’s bs4使用 python 的 bs4 的 HTML 选择器
【发布时间】:2018-02-01 02:35:15
【问题描述】:

我在这方面还很陌生,我正在努力解决这些无聊的事情,并在此过程中制作一些我自己的程序。我正在尝试使用美丽汤的“选择”方法从这段代码中提取值“33”

<span class="wu-value wu-value-to" _ngcontent-c19="">33</span>

我知道 span 元素在 div 中,我尝试了一些选择器,包括:

high_temp = w_u_soup.select('div > span .wu-value wu-value-to')

但我没能把 33 弄出来。任何帮助,将不胜感激。我试图查找 _ngcontent-c19 是什么,但我无法理解迄今为止发现的内容(我正在尝试学习 python,因此我似乎会学习一些 HTML )

【问题讨论】:

    标签: python html css beautifulsoup


    【解决方案1】:

    我认为您在这里有几个不同的问题。

    首先,你的选择器是错误的——你的选择器试图在 span 中选择一个名为 wu-value-to 的元素(这不是一个有效的 HTML 元素),其中 wu-value 是一个div 的直接后代。要选择具有 个特定类的元素,元素名称和类描述符之间不需要空格。

    所以你的选择器应该是div &gt; span.wu-value.wu-value-to。如果您的整个 HTML 是您展示的部分,那么“span”就足够了,但我猜您是通过指定父级和那些类来具体说明的。

    其次,您选择的是元素,而不是其文本内容。您需要your_node.text 才能获取文本内容。

    把它放在一起,你应该可以得到你想要的:

    w_u_soup.select('div > span.wu-value.wu-value-to').text
    

    【讨论】:

    • 正确。那行得通。后续问题:我认为选择器的问题与 HTML 中 wu-value 和 wu-value-to 之间的空格有关。我知道它需要作为一个类来阅读,但为什么你可以用“。”替换那个空格?
    • HTML 及其class 属性和CSS 选择器(这是您在CSS 和BS4 的select 方法中放入的内容)只是不同的野兽。在 HTML 中,您可以在 class 属性中指定多个类,方法是用空格分隔它们。在 CSS 选择器中,.name 表示具有 name 类的事物(可能在其他类中)。 .name1.name2 将选择一个同时包含两者的元素,并且它们可以在那里(和 HTML 中)以任意顺序排列。所以我认为你可能误解了——你可以在你的选择器中省略一个或两个类,只要它在你的输入数据中仍然是唯一的。
    猜你喜欢
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    相关资源
    最近更新 更多