Почему мой текстовый поиск BeautifulSoup со специальными символами не может получить мой элемент? - PullRequest
0 голосов
/ 26 февраля 2020

Я использую Python 3.7, Django 2 и Beautiful Soup 4. У меня есть этот фрагмент HTML ...

<p class="tagline ">submitted&#32; on 2/20/2019</p>

Я хотел бы получить этот элемент и так Я создал следующий код ...

bs = BeautifulSoup(html, features="lxml")
...
pattern = re.compile(r'^submitted\&\#32\;')
submitted_elt = bs.find(text=pattern)

К сожалению, submit_elt всегда None. Что еще мне нужно сделать, чтобы настроить мое регулярное выражение для поиска этого элемента? Я не хочу, чтобы слово «представленное» было само по себе, потому что это вернет слишком много элементов.

1 Ответ

3 голосов
/ 26 февраля 2020

Проблема в том, что &#32; - это код символа HTML для пробела (проверьте HTML коды символов здесь ), и когда BeautifulSoup анализирует это html, он переводит его в фактический пространство в вашем супе. Вы можете проверить это, распечатав это. Помещение пробела в конец переданного в качестве шаблона ('^submitted ' вместо '^submitted&#32;') заставляет его работать.

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