BeautifulSoup получить значение атрибута с помощью метода get_attr - PullRequest
1 голос
/ 18 марта 2019

Я хотел бы напечатать все элементы в списке, но не содержащий тега стиля = следующее значение: "text-align: center"

test = soup.find_all("p")
for x in test:
    if not x.has_attr('style'):
        print(x)

По сути, верните мне все элементы в списке, где стиля нетравно: "text-align: center".Возможно, это небольшая ошибка, но возможно ли определить значение стиля в has_attr?

Ответы [ 2 ]

2 голосов
/ 19 марта 2019

Просто проверьте, присутствует ли определенный стиль в стиле тега. Стиль не считается многозначным атрибутом , и вся строка внутри кавычек является значением атрибута стиля. Использование x.get("style",'') вместо x['style'] также обрабатывает случаи, в которых отсутствует атрибут стиля, и избегает KeyError.

for x in test:
    if 'text-align: center' not in x.get("style",''):
        print(x)

Вы также можете использовать списки, чтобы пропустить несколько строк.

test=[x for x in soup.find_all("p") if 'text-align: center' not in x.get("style",'')]
print(test)
1 голос
/ 19 марта 2019

Если вы хотите рассмотреть другой подход, вы можете использовать: not selector

from bs4 import BeautifulSoup as bs

html = '''
<html>
<head>
<title>Try jsoup</title>
</head>
<body>
<p style="color:green">This is the chosen paragraph.</p>
<p style="text-align: center">This is another paragraph.</p>
</body>
</html>

'''
soup = bs(html, 'lxml')
items = [item.text for item in soup.select('p:not([style="text-align: center"])')]
print(items)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...