Поддерживает ли метод BeautifulSoup .select () использование регулярного выражения?

Предположим, что я хочу проанализировать html с помощью BeautifulSoup, и я хотел использовать селектора css для поиска определенных тегов. Я бы «одолел» его, сделав

from bs4 import BeautifulSoup soup = BeautifulSoup(html) 

Если бы я хотел найти тег, чей атрибут «id» имеет значение «abc», я могу сделать

 soup.select('#abc') 

Если бы я хотел найти все «дочерние» теги под нашим текущим тегом, мы могли бы сделать

 soup.select('#abc a') 

Но теперь предположим, что я хочу найти все теги «a», чьи атрибуты «href» имеют значения, которые заканчиваются на «xyz», я хотел бы использовать регулярное выражение для этого, я надеялся что-то вроде строк

 soup.select('#abc a[href] = re.compile(r"xyz$")') 

Кажется, я не могу найти ничего, что говорит, что метод BeautifulSoup .select () будет поддерживать регулярное выражение.

One Solution collect form web for “Поддерживает ли метод BeautifulSoup .select () использование регулярного выражения?”

Функция soup.select() поддерживает только синтаксис CSS; регулярные выражения не являются частью этого.

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

 soup.select('#abc a[href$="xyz"]') 

См. Документацию по выбору атрибутов CSS в MSDN.

Вы всегда можете использовать результаты селектора CSS для продолжения поиска:

 for element in soup.select('#abc'): child_elements = element.find_all(href=re.compile('^http://example.com/\d+.html')) 

Обратите внимание, что, поскольку документация element.select() гласит :

Это удобство для пользователей, которые знают синтаксис селектора CSS. Вы можете сделать все это с помощью API Beautiful Soup. И если CSS-селектор – это все, что вам нужно, вы можете использовать lxml напрямую: он намного быстрее, и он поддерживает больше селекторов CSS. Но это позволяет комбинировать простые селектора CSS с API Beautiful Soup.

Акцент мой .

  • Почему select.select () работает с файлами дисков, но не epoll ()?
  • select и ssl в python
  • Python MySQL - SELECT работают, но не DELETE?
  • Поле Django Multiple Choice / Checkbox Выберите несколько
  • Pandas DataFrame: удалить конкретную дату во все високосные годы
  • WTForms: Как выбрать опции в SelectMultipleField?
  • Почему peewee, включая столбец «id» в запросе select mysql?
  • Python - лучший язык программирования в мире.