Задать вопрос
ValarMayar
@ValarMayar
Д У Р А Ч О К / недопрограммист графоман

Как правильно вытащить кусок текста с помощью bs4?

Доброго времени суток
Сижу пытаюсь спарсить кусок текста
<p class="order-quantity j-orders-count-wrapper" data-link="class{merge: selectedNomenclature^ordersCount < 1 toggle='hide'}">Купили
 <span data-link="{include tmpl='productCardOrderCount' ^~ordersCount=selectedNomenclature^ordersCount}">
<script type="jsv#29_"></script>    
<script type="jsv#27^"></script>
<script type="jsv#30_"></script>        
<script type="jsv#26^"></script>более 700 раз<script type="jsv/26^">
</script>   
 <script type="jsv/30_"></script>
<script type="jsv/27^"></script>
<script type="jsv/29_"></script>
</span>
</p>


В общем то говоря у меня пока ничего не получилось, ну разве что вытащить слово "купили".
Метод text мне как раз и возвращает слово "купили"

А хотелось бы достать цифру, в данном случае 700

Подозреваю, что нужно использовать регулярку, но вообще не уверен, что это поможет.
Хотя там есть кусок js-кода километром длиною(где все эти данные хранятся), его можно конечно попробовать распарсить, но там туши свет..

Поэтому хотелось бы в рамках этого куска html вытащить цифры
Благодарю
  • Вопрос задан
  • 209 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
datka
@datka
from bs4 import BeautifulSoup
import re

html = """ 
<p class="order-quantity j-orders-count-wrapper" data-link="class{merge: selectedNomenclature^ordersCount < 1 toggle='hide'}">Купили
 <span data-link="{include tmpl='productCardOrderCount' ^~ordersCount=selectedNomenclature^ordersCount}">
<script type="jsv#29_"></script>    
<script type="jsv#27^"></script>
<script type="jsv#30_"></script>        
<script type="jsv#26^"></script>более 700 раз<script type="jsv/26^">
</script>   
 <script type="jsv/30_"></script>
<script type="jsv/27^"></script>
<script type="jsv/29_"></script>
</span>
</p>
"""
soup = BeautifulSoup(html)

full_text = re.sub(' +', ' ',soup.find('p').get_text().strip().replace(u'\n', u' '))
print(full_text)

number = re.findall("[0-9]+",soup.find('p').get_text())
print(nunber)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы