Найти частичные имена классов в промежутках с Beautiful Soup - PullRequest
0 голосов
/ 16 октября 2018

Эта страница https://www.kijiji.ca/v-1-bedroom-apartments-condos/ville-de-montreal/1-chambre-chauff-eau-chaude-incl-vsl-514-856-0038/1334431659 содержит этот класс span:

<span class="currentPrice-3131760660"><span content="800.00">800,00 $</span>

Я пытаюсь автоматически извлечь цену (в данном случае 800 $).Однако со временем число после currentPrice- меняется, и мой скрипт на Python перестает работать.Я использую эту красивую функцию супа:

soup.find_all('span', {'class' : 'currentPrice-3131760660'})

Как я могу использовать find_all для извлечения частичных совпадений имен классов, таких как все классы, содержащие строку «currentPrice -»?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Согласно документам у вас есть несколько вариантов:

  • Используйте регулярное выражение:

    soup.find_all('span', attrs={'class': re.compile('^currentPrice.*')})
    
  • Использованиефункция:

    soup.find_all('span',
                  attrs={'class': lambda e: e.startswith('currentPrice') if e else False})
    
0 голосов
/ 16 октября 2018

Вы можете попробовать селектор CSS soup.select('span[class*="currentPrice-"]')

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