提取li元素并将其分配给具有美丽汤的变量

时间:2017-04-20 16:49:34

标签: python beautifulsoup

给出以下元素

<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

2 个答案:

答案 0 :(得分:4)

Check online DEMO

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]