Разбор html комментариев внутри тега <style>с помощью BeautifulSoup - PullRequest
1 голос
/ 11 июня 2019
<style type="text/css">
<!--
    p {margin: 0; padding: 0;}  .ft10{font-size:17px;font-family:JEFJLV+FoundersGrotesk-Medium;color:#ffffff;}
    .ft11{font-size:17px;font-family:JEFJLV+FoundersGrotesk-Medium;color:#105334;-moz-transform: matrix(         0,          1,         -1,          0, 0, 0);-webkit-transform: matrix(         0,          1,         -1,          0, 0, 0);-o-transform: matrix(         0,          1,         -1,          0, 0, 0);-ms-transform: matrix(         0,          1,         -1,          0, 0, 0);-moz-transform-origin: left 75%;-webkit-transform-origin: left 75%;-o-transform-origin: left 75%;-ms-transform-origin: left 75%;}
-->
</style>

Я хочу извлечь атрибуты .ft10 и .ft11 из приведенного выше фрагмента HTML.

Я использую функцию Comment из bs4, но она возвращает пустой список.

for style in soup.find_all('style'):

        comments = style.find_all(string=lambda text: isinstance(text, Comment))
        print("comments ====> ", comments)
        for c in comments:
            print(c)
            print("===========")
            c.extract()

Мне нужен список, состоящий из размера шрифта, семейства и цвета для всех классов.

1 Ответ

1 голос
/ 11 июня 2019

Я могу получить значение. Однако не уверен, что это будет работать и для других вариантов использования.

from bs4 import BeautifulSoup
from bs4 import Comment
html='''<style type="text/css"> <!-- p {margin: 0; padding: 0;} .ft10{font-size:17px;font-family:JEFJLV+FoundersGrotesk-Medium;color:#ffffff;} .ft11{font-size:17px;font-family:JEFJLV+FoundersGrotesk-Medium;color:#105334} --> </style> '''
soup=BeautifulSoup(html,'html.parser')
item=soup.find('style')
data1=item.next_element
soup1=BeautifulSoup(data1,'html.parser')
comments = soup1.find_all(string=lambda text: isinstance(text, Comment))
for c in comments:
  data=c.strip().split('}')
  str1=data[1].split('.ft10')[1]+ "}"
  str2=data[2].split('.ft11')[1]+ "}"

print(str1)
print(str2)

Выход:

{font-size:17px;font-family:JEFJLV+FoundersGrotesk-Medium;color:#ffffff;}
{font-size:17px;font-family:JEFJLV+FoundersGrotesk-Medium;color:#105334}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...