文本,python,web-scraping,beautifulsoup"/>

首页 > 解决方案 > Python 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>

#所有这部分我不需要

标签: pythonweb-scrapingbeautifulsoup

解决方案


我认为你不需要 for 循环。尝试这个:

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

如果有多个具有 class="disponibilidade" 的 div,您可以使用以下代码:

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

推荐阅读