python - 从没有子元素的内部元素中获取文本
问题描述
我正在抓取一个包含多个p
元素的网页,我想在其中获取文本而不包括他们的孩子。
页面结构如下:
<p class="default">
<div>I don't want this text</div>
I want this text
</p>
当我使用
parent.find_all("p", {"class": "default").get_text()
这是我得到的结果:
I don't want this text
I want this text
我正在使用 BeautifulSoup 4 和 Python 3
编辑:当我使用
parent.find_all("p", {"class": "public item-cost"}, text=True, recursive=False)
它返回一个空列表
解决方案
您可以使用.find_next_sibling()
withtext=True
参数:
from bs4 import BeautifulSoup
html_doc = """
<p class="default">
<div>I don't want this text</div>
I want this text
</p>
"""
soup = BeautifulSoup(html_doc, "html.parser")
print(soup.select_one(".default > div").find_next_sibling(text=True))
印刷:
I want this text
或使用.contents
:
print(soup.find("p", class_="default").contents[-1])
编辑:剥离字符串:
print(soup.find("p", class_="default").contents[-1].strip())
推荐阅读
- wcf - WCF在使用IParamaterInspector点击方法之前验证Json请求
- r - R中基于规则的数据框格式
- reactjs - [ReactJS][React-Router-V4] 重定向[auth] 问题
- php - MySQL批量更新,更新注册、未注册用户的标志
- html - 即使使用 file:// 协议,如何使 Firefox 在文件更改时自动刷新?
- php - 如何将日期从应用程序传递到 cpanel 中的 cronjob?
- html - 轮播指标引导程序 4 不采用 css 样式
- wordpress - 在主页上显示随机产品,分页且无重复
- kubernetes - 未找到自定义对象状态 Kubernetes
- angular - 无法读取参数并在更改路由中的参数时再次加载组件时面临问题