извлечение поля из HTML с помощью BeautifulSoup4 - PullRequest
0 голосов
/ 27 июня 2018

Я впервые использую BeautifulSoup4 и застрял с чем-то, что должно быть простым. У меня есть тег элемента, который выглядит так:

<td class="stage" data-value="phase3">\n                                    
\n    Phase 3\n<svg height="5" viewbox="1 1 95 5" width="95" 
xmlns="http://www.w3.org/2000/svg">\n<g fill="none" transform="translate(1 1 
)">\n<rect fill="#911C36" height="5" rx="2" width="15"></rect>\n<rect 
fill="#D6A960" height="5" rx="2" width="15" x="16"></rect>\n<rect 
fill="#E7DE6F" height="5" rx="2" width="15" x="32"></rect>\n<rect fill="#ddd" 
height="5" rx="2" width="15" x="48"></rect>\n<rect fill="#ddd" height="5" 
rx="2" width="15" x="64"></rect>\n<rect fill="#ddd" height="5" rx="2" 
width="15" x="80"></rect>\n</g>\n</svg> </td>

Я хочу извлечь значение «phase3» из поля «data-value» и список цветов заливки, например

[ "#911C36", "#D6A960", ... ]

Каковы правильные запросы для этого?

1 Ответ

0 голосов
/ 27 июня 2018

BS docs указывает, что передача True соответствует чему угодно, независимо от значения. Примерно так должно работать:

from bs4 import BeautifulSoup


soup = BeautifulSoup("""
<td class="stage" data-value="phase3">\n                                    
\n    Phase 3\n<svg height="5" viewbox="1 1 95 5" width="95" 
xmlns="http://www.w3.org/2000/svg">\n<g fill="none" transform="translate(1 1 
)">\n<rect fill="#911C36" height="5" rx="2" width="15"></rect>\n<rect 
fill="#D6A960" height="5" rx="2" width="15" x="16"></rect>\n<rect 
fill="#E7DE6F" height="5" rx="2" width="15" x="32"></rect>\n<rect fill="#ddd" 
height="5" rx="2" width="15" x="48"></rect>\n<rect fill="#ddd" height="5" 
rx="2" width="15" x="64"></rect>\n<rect fill="#ddd" height="5" rx="2" 
width="15" x="80"></rect>\n</g>\n</svg> </td>
""", "html.parser")

colors = [x["fill"] for x in soup.findAll("rect", {"fill": True})]
data_vals = [x["data-value"] for x in soup.findAll("td", {"data-value": True})]

print(colors)
print(data_vals)

Выход:

['#911C36', '#D6A960', '#E7DE6F', '#ddd', '#ddd', '#ddd']
['phase3']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...