#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())