невозможно получить p class = info <span>данные тега из Beautifulsoup - PullRequest
0 голосов
/ 30 мая 2018

Невозможно получить данные тега, невозможно получить p class = данные информационного тега от beautifulsoup, спасибо!

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

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

Как только вы решите проблему 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
0 голосов
/ 30 мая 2018

Хм - в python3 это прекрасно работает для меня, если вы просто цитируете 'class' в этой строке

table = soup.find('p', attrs={'class':'info'})
                          ^

, хотя на выходе будут элементы ..., а не просто текст.Вы хотите элементы или только текст?

0 голосов
/ 30 мая 2018

это 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...