如何从<span>中刮取一些没有唯一类标识符的文本?

python_newbie

我是新手,所以请耐心等待。我有这个HTML代码,我想提取属性的类型,例如“公寓”,即“否”。床(例如2张)和位置(例如“伯明翰”)。我想将每个保存在列表中。问题在于没有唯一的类标识符。

<div class="extra">
    <span class="tablet-visible">
    <span class="item"><label><i class="ouricon classified"></i><b></b></label>
        <span>For Sale</span></span>
    </span>
    <span class="tablet-visible">
        <span class="item"><label><i class="ouricon house"></i><b></b></label>
            <span>Apartment</span></span>
        </span>
        <span class="">
            <span class="item"><label><i class="ouricon bed"></i><b></b></label>
                <span>2</span>
            </span>
        </span>
        <span class="">
            <span class="item"><label><i class="ouricon locationpin"></i><b></b></label>
                <span>Birmingham</span>
            </span>
        </span> 
</div>

我尝试了这段代码,但是当然可以打印出class = extra中的所有文本,包括不是我想要的'For Sale'。

results = requests.get(url)
soup = BeautifulSoup(results.text, "html.parser")
desc_div = soup.find_all('div', attrs={"data-itemid": True})
for property in desc_div:
    extra = property.find('div', class_='extra')
    print(extra.text.strip())

任何帮助将非常感激。

巴杜克

由于For Sale位于相同的标签和类中,因此将其过滤掉。

from bs4 import BeautifulSoup

html = """
<div class="extra">
    <span class="tablet-visible">
    <span class="item"><label><i class="ouricon classified"></i><b></b></label>
        <span>For Sale</span></span>
    </span>
    <span class="tablet-visible">
        <span class="item"><label><i class="ouricon house"></i><b></b></label>
            <span>Apartment</span></span>
        </span>
        <span class="">
            <span class="item"><label><i class="ouricon bed"></i><b></b></label>
                <span>2</span>
            </span>
        </span>
        <span class="">
            <span class="item"><label><i class="ouricon locationpin"></i><b></b></label>
                <span>Birmingham</span>
            </span>
        </span> 
</div>
"""

soup = BeautifulSoup(html, "html.parser").find_all("span", {"class": "item"})
print([i.text.strip() for i in soup if i.text.strip() != "For Sale"])

输出:

['Apartment', '2', 'Birmingham']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在硒中没有唯一标识符的元素中定位?

如何对div的span元素执行一些操作?

如何根据 html 通过 selenium-webdriver 和 Python 在没有唯一标识符的文本框中单击

如何指定类的唯一标识符

如何从SPAN提取文本?请

如何更改<span>类名称?

如何生成8位数字的唯一标识符以替换python pandas中的现有标识符

如何删除所有SPAN?

如何删除没有唯一标识符的重复行

如何在没有唯一标识符的情况下抓取跨度?

如何通过使用python硒获取span标签(如<span> Test </ span>)中的文本?

如何将 <span> 前后的文本封装到另一个 <span> 中?

在 Span 中,如何更改文本的颜色

如何从span html python中获取文本

如何选择类的span标签中的内容

如何使用JavaScript更改span元素的文本?

如何用 <span> 包围特定文本

如何从span类获取content属性的值

如何在类下隐藏 <span> 值

如何循环应用 div 类的 span id?

React:如何在没有索引或唯一标识符的情况下修改基于数组的状态?

如何从 Firebase Firestore 获取特定文档 ID,其中 ID 是随机生成的并且没有唯一标识符?

如何使用Jsoup解析span类中的“文本”

Selenium XPath:如何在 span 类标签中查找文本?

如何在span标签中写入值?

如何通过javascript从span中获取价值?

如何从span标签中抓取字典?

jQuery:如何更改列表中的span属性

如何通过 jQuery 从 span 中获取价值?