【问题标题】:Python/BeautifulSoup - Getting specific attribute in the same tag/elementPython/BeautifulSoup - 在同一标签/元素中获取特定属性
【发布时间】:2016-07-04 16:22:06
【问题描述】:

我是 Python 和 BeautifulSoup 的新手。如果我使用了错误的术语,请原谅我。

我正在尝试从具有多个属性的 div 标签/元素中获取特定的“文本”。

<div class="property-item" data-id="183" data-name="Brittany Apartments" data-street_number="240" data-street_name="Brittany Drive" data-city="Ottawa" data-province="Ontario" data-postal="K1K 0R7" data-country="Canada" data-phone="613-688-2222" data-path="/apartments-for-rent/brittany-apartments-240-brittany-drive-ottawa/" data-type="High-rise-apartment" data-latitude="45.4461070" data-longitude="-75.6465360" >

下面是我循环查找“property-item”的代码

for btnMoreDetails in citySoup.findAll(attrs= {"class":"property-item"}):

我的问题是,例如,如果我特别想要“数据名称”和“数据路径”,我该如何获取它?

我搜索过谷歌,甚至搜索过这个网站。有人说使用 .contents[2]。但我仍然无法得到它。

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    一旦您提取了元素(findAll 一次提取一个),您就可以像访问字典键一样访问属性。比如下面的代码:

    data = """<div class="property-item" data-id="183" data-name="Brittany Apartments" data-street_number="240" data-street_name="Brittany Drive" data-city="Ottawa" data-province="Ontario" data-postal="K1K 0R7" data-country="Canada" data-phone="613-688-2222" data-path="/apartments-for-rent/brittany-apartments-240-brittany-drive-ottawa/" data-type="High-rise-apartment" data-latitude="45.4461070" data-longitude="-75.6465360" >"""
    
    import bs4
    soup = bs4.BeautifulSoup(data)
    for btnMoreDetails in soup.findAll(attrs= {"class":"property-item"}):
        print btnMoreDetails["data-name"]
    

    打印出来

    Brittany Apartments
    

    【讨论】:

    • 谢谢!由您解决并代表您
    【解决方案2】:

    如果您想获取data-namedata-path 属性,您可以简单地使用类字典访问Tag 的属性:

    for btnMoreDetails in citySoup.findAll(attrs={"class":"property-item"}):
        print(btnMoreDetails["data-name"])
        print(btnMoreDetails["data-path"])
    

    注意,您也可以使用CSS selector 来匹配属性项:

    for property_item in citySoup.select(".property-item"):
        print(property_item["data-name"])
        print(property_item["data-path"])
    

    仅供参考,如果您想查看所有属性,请使用.attrs property

    for property_item in citySoup.select(".property-item"):
        print(property_item.attrs)
    

    【讨论】:

    • 谢谢!解决并代表您。
    猜你喜欢
    • 2013-07-01
    • 2020-05-02
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2021-05-24
    • 1970-01-01
    相关资源
    最近更新 更多