Как мне очистить этот тег от сети? - PullRequest
0 голосов
/ 19 января 2020

Это мой HTML тег. Я пытаюсь получить значение после тега <br>. Когда я пытаюсь сделать это, я получаю оба значения. Как бы я это сделал, используя Beautiful Soup. Любая помощь будет оценена.

<div class="col search_price discounted responsive_secondrow">
<span style="color: #888888;"><strike>CDN$ 2.29</strike></span>
<br>CDN$ 1.48
</div>

Ответы [ 2 ]

0 голосов
/ 21 января 2020

Другие решения.

from simplified_scrapy.simplified_doc import SimplifiedDoc
html='''
<div class="col search_price discounted responsive_secondrow">
<span style="color: #888888;"><strike>CDN$ 2.29</strike></span>
<br>CDN$ 1.48
</div>
'''
doc = SimplifiedDoc(html)
divs = doc.getElementsByClass('col search_price discounted responsive_secondrow')
for div in divs:
  value = div.br.nextText() # first
  print (value)
  value = doc.html[div.br._end:div._end-6] # second
  print (value)
  value = doc.removeHtml(div.getSectionByReg('<br.*>.*')) # third
  print (value)
  value = div.removeElement('span') # fourth
  print (value.text)

Результат:

CDN$ 1.48
CDN$ 1.48
CDN$ 1.48
CDN$ 1.48
0 голосов
/ 19 января 2020

У вас, по сути, было это, просто нужно было использовать словарь attrs для правильного класса div, а затем искать следующий тег 'br', чей брат - ваш текст:

from bs4 import BeautifulSoup as bs
HTML = """
<div class="col search_price discounted responsive_secondrow">
<span style="color: #888888;"><strike>CDN$ 2.29</strike></span>
<br>CDN$ 1.48
</div>
"""
soup = bs(HTML, 'html.parser')
# get all divs with your class attr
divs = soup.find_all("div", attrs={'class': 'col search_price discounted responsive_secondrow'})
for div in divs:
    # find the <br> tag, next_sibling is the data
    print(div.find_next('br').next_sibling)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...