Skip to main content
 首页 » 编程设计

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

2025年05月04日14kevingrace

我是 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]。但我仍然无法得到任何信息。

请您参考如下方法:

一旦提取了元素(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