Очистить текст span от нескольких элементов span с одинаковым именем в теге ap на веб-сайте - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу очистить текст от тега span внутри нескольких тегов span с похожими именами.Используя python, beautifulsoup для разбора сайта.Просто нельзя однозначно идентифицировать этот конкретный элемент диапазона валовой суммы.Тег span имеет name=nv и значение данных, но у другого тоже есть.Я просто хочу извлечь валовую цифру в миллионах долларов.Пожалуйста, сообщите.

это структура:

<p class="sort-num_votes-visible">
 <span class="text-muted">Votes:</span>
 <span name="nv" data-value="93122">93,122</span>
 <span class="ghost">|</span>
 <span class="text-muted">Gross:</span>
 <span name="nv" data-value="69,645,701">$69.65M</span>
</p>

Хотите, чтобы текст из второго диапазона под классом span = text muted Gross.

1 Ответ

0 голосов
/ 28 февраля 2019

Что вы можете сделать, так это найти тег <span> с текстом «Gross:».Затем, как только он найдет этот тег, скажите ему пойти и найти следующий тег <span> (который является значением) и получить этот текст.

from bs4 import BeautifulSoup as BS


html = '''<p class="sort-num_votes-visible">
 <span class="text-muted">Votes:</span>
 <span name="nv" data-value="93122">93,122</span>
 <span class="ghost">|</span>
 <span class="text-muted">Gross:</span>
 <span name="nv" data-value="69,645,701">$69.65M</span>
</p>'''

soup = BS(html, 'html.parser')

gross_value = soup.find('span', text='Gross:').find_next('span').text

Вывод:

print (gross_value)
$69.65M

или, если вы хотите получить data-value, измените эту последнюю строку на:

gross_value = soup.find('span', text='Gross:').find_next('span')['data-value']

Вывод:

print (gross_value)
69,645,701

И, наконец, если вам нужны эти значения в виде целого числа вместо строки, то вы можете агрегировать их как-нибудь позже:

gross_value = int(soup.find('span', text='Gross:').find_next('span')['data-value'].replace(',', ''))

Вывод:

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