Красивый суп: Как получить данные, которые соответствуют любой заданной строке - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь найти элемент, который может соответствовать любой входной строке.

Например: -

data = soup.find(text="something")

Это прекрасно работает, но как его использовать, когда мне нужно искать что-то вроде этого: -

data = soup.find(text="something" or text="another something")

Если нетМожно искать несколько строк, то какой должен быть лучший способ выполнить подобную вещь.

Ответы [ 2 ]

3 голосов
/ 27 июня 2019

Regex, безусловно, является допустимым и полезным способом поиска по нескольким текстам, но люди часто забывают (или не знают), что вы можете передать список строк, и Beautiful Soup выдаст результаты, соответствующие любому из элементов в список:

from bs4 import BeautifulSoup

html = """
<div>something</div>
<div>something else</div>
"""
soup = BeautifulSoup(html, "lxml")
items = soup.find_all(text=["something", "something else"])
print(items)

выход

['something', 'something else']
2 голосов
/ 27 июня 2019

Вы можете использовать Regex здесь.

Пример:

import re
data = soup.find(text=re.compile("something|another something"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...