Прекрасный выбор супа - PullRequest
       10

Прекрасный выбор супа

0 голосов
/ 27 апреля 2020

Очень плохо знаком с Beautiful Soup, и я застрял при получении двух значений из "data" в следующем коде. В идеале я хотел бы выбрать значение1 (500) как «item1», а второе значение (442) как «item2».

<div  id="chart-1" class="charts-highchart"  data-chart="{&quot;chart&quot;:{&quot;type&quot;:&quot;pie&quot;,&quot;width&quot;:null,&quot;height&quot;:null,&quot;backgroundColor&quot;[&quot;Male&quot;,&quot;Female&quot;],&quot;data&quot;:[500,442]}],&quot;exporting&quot;pane&quot;:null}"
        style=""></div>

1 Ответ

0 голосов
/ 27 апреля 2020

Используйте регулярное выражение re и используйте следующий селектор css.

import re
from bs4 import BeautifulSoup

html='''<div  id="chart-1" class="charts-highchart"  data-chart="{&quot;chart&quot;:{&quot;type&quot;:&quot;pie&quot;,&quot;width&quot;:null,&quot;height&quot;:null,&quot;backgroundColor&quot;[&quot;Male&quot;,&quot;Female&quot;],&quot;data&quot;:[500,442]}],&quot;exporting&quot;pane&quot;:null}"
        style=""></div>'''
soup=BeautifulSoup(html,'html.parser')
data=soup.select_one('#chart-1[data-chart]')['data-chart']
items=re.findall("(\d+)",data)
for item in items:
    print(item)

Выход :

500
442

Если вы хотите назначить в переменной используйте это.

import re
from bs4 import BeautifulSoup

html='''<div  id="chart-1" class="charts-highchart"  data-chart="{&quot;chart&quot;:{&quot;type&quot;:&quot;pie&quot;,&quot;width&quot;:null,&quot;height&quot;:null,&quot;backgroundColor&quot;[&quot;Male&quot;,&quot;Female&quot;],&quot;data&quot;:[500,442]}],&quot;exporting&quot;pane&quot;:null}"
        style=""></div>'''
soup=BeautifulSoup(html,'html.parser')
data=soup.select_one('#chart-1[data-chart]')['data-chart']
items=re.findall("(\d+)",data)
item1=items[0]
item2=items[-1]
print(item1,item2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...