2 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
你可以試試:
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)

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
找到包含文本的元素li,然后找到下一個(gè)強(qiáng)標(biāo)簽。聲明空列表并追加。
代碼。
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']
添加回答
舉報(bào)