Использование BeautifulSoup для очистки определенного элемента в классе CSS

#python #web-scraping #beautifulsoup

#python #веб-очистка #beautifulsoup

Вопрос:

Я пытаюсь использовать BeautifulSoup в Python для очистки 3-го элемента li в классе CSS. Тем не менее, я довольно новичок в этом, и я не уверен, что лучший способ сделать это.

В приведенном ниже примере я пытаюсь очистить 170 голосов из этого списка (** в реальном примере на странице, которую я хочу очистить, их сотни, но все они вложены в один и тот же класс CSS в 3-м элементе li)

 <ul class="example-ul-class">
   <li class="example-li-class"><a href="https://wwww.example.com">EXAMPLE NAME</a></li>
   <li><i class="example-li-class">12 hours ago</time></li>
   <li><i class="example-li-class"> 170 votes</li>
   <li><i class="example-li-class">3 min read</li>
</ul>
  

Я попытался использовать что-то вроде приведенного ниже, но получаю ошибку, обнаруженную после кода

subtext = soup.select(‘.example-ul-class > li[2]’)

печать (подтекст)

Ошибка:

в selector_iter вызовите SelectorSyntaxError(msg, self.pattern, index) soupsieve.util.Ошибка SelectorSyntaxError: неверно сформированный селектор атрибута в позиции 29 строка 1: .пример-ul-class > li[2]

** Опять же, желаемым результатом было бы вернуть только строку «170 голосов»

Спасибо за помощь!

Ответ №1:

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

 print(soup.find('ul',class_='example-ul-class').find_all('li')[2].text.strip())