Как сопоставить содержимое только со значением атрибута.? - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь сопоставить содержимое только со значением атрибута. Например, следующие данные у меня есть

<div id='cont'>blablabla</div>

<span class='cont newClass'>blablabla</div>

<someothertag name='cont'>blablabla</div>

Исходя из вышесказанного, я хочу сопоставить все теги, которые содержат attrvalue cont

Для соответствия любому тегу, который я использовал в RegEx, как показано ниже

soup.find_all(re.compile(r'.*'),{"class":re.compile(r".*cont.*")}):
               --------------             ------------------------
                Match any tag              match with the string cont     

Но я не знаю, как сделать регулярное выражение для имени атрибута class,id,name,etc.

Если предположить, что я перейду с чистым регулярным выражением, оно не будет соответствовать значениям, как показано ниже

re.findall(r'<[^>]*cont[^>]*>.+?<\/\1>',str(soup))

1 Ответ

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

Я думаю, что это невозможно сделать сразу. Вы можете передать обратный вызов на find_all и выполнить обработку там. Как то так (не проверено):

def checker(tag):
    for attr_val in tag.attrs.values():
        if 'cont' in attr_val:
            return True

    return False

soup.find_all(checker)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...