Python/BeautifulSoup - 在同一 tag/element 中获取特定属性
Python/BeautifulSoup - Getting specific attribute in the same tag/element
我是 Python 和 BeautifulSoup 的新手。如果我使用了错误的术语,请原谅我。
我正在尝试从具有多个属性的 div tag/element 中获取特定的 'text'。
<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"}):
我的问题是,如果我特别想要 'data-name' 和 'data-path',我该如何获取它?
我搜索过 google 甚至这个网站。有些人说使用 .contents[2]。但是我还是没有得到。
如果您想获得 data-name
和 data-path
属性,您可以简单地使用 类似字典的访问方式 到 Tag
' s 属性:
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)
一旦提取了元素(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
我是 Python 和 BeautifulSoup 的新手。如果我使用了错误的术语,请原谅我。
我正在尝试从具有多个属性的 div tag/element 中获取特定的 'text'。
<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"}):
我的问题是,如果我特别想要 'data-name' 和 'data-path',我该如何获取它?
我搜索过 google 甚至这个网站。有些人说使用 .contents[2]。但是我还是没有得到。
如果您想获得 data-name
和 data-path
属性,您可以简单地使用 类似字典的访问方式 到 Tag
' s 属性:
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)
一旦提取了元素(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