Beautifulsoup найди все, как получить второй текст - PullRequest
0 голосов
/ 03 марта 2019

Я занимаюсь питоном и не могу найти ответ на этот вопрос, так что надеюсь, что кто-нибудь сможет помочь.Я использую findAll в Python и получаю вывод двух чисел в текстовой форме.однако я хочу только второй номер, а не первый.Как мне выбрать второе число?

Это мой код:

product_price_container_after = container.findAll("div",{"class":"discounted"})
product_price_after = product_price_container_after[0].text
print(product_price_after)

Вот откуда я пытаюсь его получить:

<div class="col search_price discounted responsive_secondrow">
<span style="color: #888888;"><strike>59,98€</strike></span><br/>19,99€
                                        </div>

Так чтовывод:

59,98 € 19,99 €

Как получить только 19,99 €?

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

Ответы [ 3 ]

0 голосов
/ 03 марта 2019

Вы можете использовать раздетые строки

import requests
from bs4 import BeautifulSoup as bs

res = requests.get('https://store.steampowered.com/search/?specials=1&page=1')
soup = bs(res.content, 'lxml')
prices = soup.select('.discounted')

for price in prices:
    if price.text is not None:
        strings = [string for string in price.stripped_strings]
        print(strings[1])

Или next_sibling:

for price in prices:
    if price.text is not None:
        print(price.find('br').next_sibling)
0 голосов
/ 03 марта 2019

Вы можете использовать dedegrad () или extract () для удаления элементов из дерева.

discountedDivs = container.findAll("div", {"class": "discounted"})

for discountedDiv in discountedDivs:
    discountedDiv.find("span").extract()
    print(discountedDiv.text) ## returns 19,99€
0 голосов
/ 03 марта 2019

Извините, но я не могу воспроизвести ваш код, он неполный.Попробуйте это, хотя:

product_price_after = product_price_container_after[1].text
...