python - 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>
#所有这部分我不需要
解决方案
我认为你不需要 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)
推荐阅读
- arduino - 多次更改变量的值并在 arduino 的整个循环中保持该变量值
- android - 如何在Android中取消推送通知时发送请求
- javascript - 字符串数组被转换为对象
- javascript - 如何将 useState 与对象一起使用?
- scala - Scala 中没有参数和名称参数 eta 扩展混淆
- git - git merge 但保持传入的更改不分阶段
- postgresql - Postgres JSONB 使用 JPA 检查 JSON 是否包含字符串
- list - Prolog 从列表中删除所有增加的子系列
- c - 是否有涉及 gcc 的命令行来知道它正在使用哪个 --std=xxx ?
- c++ - VSCode中的Cpp - 如何编译到其他文件夹