Веб-утилита Python - PullRequest
       47

Веб-утилита Python

0 голосов
/ 25 февраля 2019

Я просто хочу извлечь данные из HTML с помощью Python. (Мне нужно data = 20%). Любая помощь по этому вопросу будет принята с благодарностью.

<div class="ratings-container">
  <div class="ratings">
    <div class="ratings active" style="width: 20%"></div>
  </div>
</div>

Я не знаю, как получить стильсодержание.Результат следующего аналогичного кода равен NULL:

mratingNew = (tag.findAll('div',attrs={"class":"ratings active"})) 
for i in range(len(muserName)): 
    print(mratingNew[i].['style']) 

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете получить ширину с помощью find и разделить ее в соответствии с :

from bs4 import BeautifulSoup

html = '''<div class="ratings-container">
  <div class="ratings">
 <div class="ratings active" style="width: 20%"></div>
   </div>
     </div>'''

soup = BeautifulSoup(html,"html.parser")
finddiv = soup.find('div',attrs={'class':'ratings active'})
style = finddiv['style']

style = style.split(':',1)[-1]
print style

ВЫХОД:

 20%

Если у вас естьболее одной ширины с тем же именем класса, например:

html = '''<div class="ratings-container">
 <div class="ratings">
 <div class="ratings active" style="width: 20%"></div>
 <div class="ratings active" style="width: 40%"></div>
 <div class="ratings active" style="width: 30%"></div>
   </div>
     </div>'''

Вам необходимо использовать findAll и разделить его по одному

find_last_div = soup.findAll('div',attrs={'class':'ratings active'})
for width_value in find_last_div:
    width_Get = width_value['style'].split(':',1)[-1]
    print width_Get

ВЫХОД:

 20%
 40%
 30%
...