为了账号安全,请及时绑定邮箱和手机立即绑定

Python我如何在BeautifulSoup中提取具有相同类名的数据

Python我如何在BeautifulSoup中提取具有相同类名的数据

慕哥6287543 2022-07-19 16:57:53
我正在尝试使用 Python 中的 BeautifulSoup 库提取数据。我用拉链和汤来提取。我的 html 数据如下所示:<li>    <ul class="features">        <li>Year: <strong>2016</strong></li>        <li>Kilometers: <strong>81,000</strong></li>    </ul>    <ul class="features">        <li>Doors: <strong>2 door</strong></li>        <li>Color: <strong>White</strong></li>    </ul>    <ul class="features">    </ul></li>在这里,我想在单独的变量中获得年份、公里、门、颜色。但是当我运行我的代码时,它会聚在一起。我的代码:for title, price, date, features  in zip(soup.select('.listing-item .title'),                            soup.select('.listing-item .price'),                            soup.select('.listing-item .date'),                            soup.select('.listing-item .features')):    title = title.get_text().strip()    price = price.get_text().strip()    date = date.get_text().strip()    features = features.get_text().strip()    print(features)输出 :Year: 2016Kilometers: 81,000Doors: 2 doorColor: White我如何将年份、公里、门、颜色存储在单独的变量中?
查看完整描述

2 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

你可以试试:


from bs4 import BeautifulSoup as bs

from io import StringIO


data = """<li>

    <ul class="features">

        <li>Year: <strong>2016</strong></li>

        <li>Kilometers: <strong>81,000</strong></li>

    </ul>

    <ul class="features">

        <li>Doors: <strong>2 door</strong></li>

        <li>Color: <strong>White</strong></li>

    </ul>

    <ul class="features">

    </ul>

</li>"""


soup = bs(StringIO(data))

Year, Km, Doors, Color = list(map(lambda x: x.text.split(':')[1].strip(), soup.select('.features > li')))

print(Year, Km, Doors, Color)


查看完整回答
反对 回复 2022-07-19
?
心有法竹

TA贡献1866条经验 获得超5个赞

找到包含文本的元素li,然后找到下一个强标签。声明空列表并追加。


代码。


from bs4 import BeautifulSoup


html='''<li>


    <ul class="features">


        <li>Year: <strong>2016</strong></li>


        <li>Kilometers: <strong>81,000</strong></li>


    </ul>

    <ul class="features">


        <li>Doors: <strong>2 door</strong></li>


        <li>Color: <strong>White</strong></li>


    </ul>

    <ul class="features">


    </ul>


</li>

'''

soup=BeautifulSoup(html,'html.parser')

Year=[]

KiloMeter=[]

Doors=[]

Color=[]

for year,km,dor,colr in zip(soup.select('ul.features li:contains("Year:")'),soup.select('ul.features li:contains("Kilometers:")'),soup.select('ul.features li:contains("Doors:")'),soup.select('ul.features li:contains("Color:")')):

    Year.append(year.find_next('strong').text)

    KiloMeter.append(km.find_next('strong').text)

    Doors.append(dor.find_next('strong').text)

    Color.append(colr.find_next('strong').text)


print(Year,KiloMeter,Doors,Color)

输出:列表


['2016'] ['81,000'] ['2 door'] ['White']


查看完整回答
反对 回复 2022-07-19
  • 2 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号