给出以下元素
<ul class="listing-key-specs ">
<li>2004 (54 reg)</li>
<li>Hatchback</li>
<li>90,274 miles</li>
<li>Manual</li>
<li>1.2L</li>
<li>60 bhp</li>
<li>Petrol</li>
</ul>
如何提取每个li元素并将其分配给具有美丽汤的变量?
目前,我的代码如下所示:
detail = car.find('ul', {'class': 'listing-key-specs'}).get_text(strip=True)
并产生以下输出:
2005 (05 reg)Saloon66,038 milesManual1.8L118 bhpPetrol
有关更多背景信息,请参阅以下问题:"None" returned during scraping。
答案 0 :(得分:4)
from bs4 import BeautifulSoup
html_doc="""
<ul class="listing-key-specs ">
<li>2004 (54 reg)</li>
<li>Hatchback</li>
<li>90,274 miles</li>
<li>Manual</li>
<li>1.2L</li>
<li>60 bhp</li>
<li>Petrol</li>
</ul>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
lst = [_.get_text(strip=True) for _ in soup.find('ul', {'class': 'listing-key-specs'}).find_all('li')]
print(lst)
答案 1 :(得分:1)
目前,您在ul标记上调用get_text()
,它只是将其所有内容作为一个字符串返回。所以
<div>
<p>Hello </p>
<p>World </p>
</div>
会成为Hello World
。
要提取每个匹配的子标记并将其存储为单独的元素,请使用car.find_all()
,如下所示。
tag_list = car.find_all('li', class_='listing-key-specs')
my_list = [i.get_text() for i in tag_list]
这会为您提供班级中所有li
个标签的列表&#39; listing-key-specs&#39;。现在您可以自由分配变量,例如。 carType = my_list[1]