Фильтрация Python BeautifulSoup текст

#python #web-scraping #beautifulsoup

Вопрос:

BeautifulSoup, мне нужно отфильтровать результат строки, я хотел бы получить только текст за пределами справки «product_available»?

Мой код:

 from bs4 import BeautifulSoup
import requests

html = requests.get("https://www.kabum.com.br/produto/129973/placa-de-video-asus-nvidia-geforce-gtx-1650-4gb-").content
soup = BeautifulSoup(html, 'html.parser')

#get model name
for strong_tag in soup.find_all(id="titulo_det"):
    print(strong_tag.text, strong_tag.next_sibling)

#get disponibility
for disponibility in soup.find('div',{'class':'disponibilidade'}):
    print (disponibility)



OUTPUT.

#here is the model is formated

Placa de Vídeo Asus NVIDIA GeForce GTX 1650, 4GB, GDDR6 - TUF-GTX1650-O4GD6-P-GAMING 
   #here is the part of disponibility        
    <table>
    <tr>
    <td style="vertical-align:bottom">
   #here i need this part only
    <img alt="produto_disponivel" height="32"        src="https://static.kabum.com.br/conteudo/temas/001/imagens/descricao/bot_disponibilidade_on.gif"             width="164"/>
        </td>
        <td style="vertical-align:bottom">
        </td>
        </tr>
        </table>
 

#вся эта часть мне не нужна

Ответ №1:

Я думаю, что вам не нужна петля for. Попробуйте это:

 disponibility = soup.find('div',{'class':'disponibilidade'})
print(disponibility.table.tr.td.img)
 

Если существует несколько дивов, которые имеют class=»disponibilidade», вы можете использовать этот код:

 for disponibility in soup.find_all('div',{'class':'disponibilidade'}):
    print(disponibility.table.tr.td.img)
 

Комментарии:

1. Спасибо, я постараюсь, большое вам спасибо за помощь

2. или просто soup.select_one('.disponibilidade img')['src']