#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']