繁体   English   中英

Python / BeautifulSoup-在同一标签/元素中获取特定属性

[英]Python/BeautifulSoup - Getting specific attribute in the same tag/element

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

我正在尝试从div标记/元素中获取特定的“文本”,该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" >

下面是我的代码循环遍历并查找“属性项”

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

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

我已经搜索过Google甚至这个网站。 有人说使用.contents [2]。 但是我仍然无法得到任何东西。

提取元素后( 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

如果要获取data-namedata-path属性,则可以简单地使用类似于字典的方式访问 Tag的属性:

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

请注意,您还可以使用CSS选择器来匹配属性项:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM