无法获取标签数据,无法从美丽汤中获取p class=info标签数据,谢谢!
from bs4 import BeautifulSoup
import re
html = """"
<p class="info">
<span>Kranji Mile Day simulcast races,
Kranji Racecourse, SIN</span>
<span>Class 3 Handicap - 1200M TURF</span>
<span>Saturday, 26 May 2018</span>
<span>Race 1, 5:15 PM</span>
</p>
"""
soup = BeautifulSoup(html, "html.parser")
table = soup.find('p', attrs={class:'info'})
rows = table.findAll("span")
print rows
以逗号分隔的预期输出
Kranji Mile Day simulcast races, Kranji Racecourse, SIN , Class 3, Handicap, 1200M, TURF, Saturday, 26 May 2018, Race 1, 5:15PM
解决class
问题后,如另一个答案所述,您仍然必须从标签中提取字符串:
result = ', '.join(r.string for r in rows)
print(result)
#Kranji Mile Day simulcast races,
# Kranji Racecourse, SIN, Class 3 Handicap - 1200M TURF, Saturday, 26 May 2018, Race 1, 5:15 PM
它是class_
,因为类是保留关键字
table = soup.find('p', attrs={'class':'info'})
table = soup.find('p',class_='info'})
使用文本属性,它连接标签内的所有文本
如果字符串属性中包含另一个标签,则它不起作用
print (', '.join(i.text for i in rows)) # For getting text
嗯 - 在 python3 中,如果您只是在此行中引用"class",这对我来说很好用
table = soup.find('p', attrs={'class':'info'})
^
虽然输出将是...元素,而不仅仅是文本。 您想要元素还是仅需要文本?