python - 当其兄弟姐妹具有同名的父级时,如何提取字符串的子字符串(BeautifulSoup)
问题描述
例如:
<ul class="key-dates">
<li>
Birthday: Monday 26 April 2021
</li>
<li>
Christmas: Saturday 25 December 2021
</li>
<li>
New Years: Saturday 1 January 2021
</li>
</ul>
说如果我只是想取消生日日期,我会怎么做?
import requests
import bs4
info = requests.get('url')
解决方案
您可以使用 CSS 选择器(:contains
或:-soup-contains
):
from bs4 import BeautifulSoup
html_doc = """
<ul class="key-dates">
<li>
Birthday: Monday 26 April 2021
</li>
<li>
Christmas: Saturday 25 December 2021
</li>
<li>
New Years: Saturday 1 January 2021
</li>
</ul>
"""
soup = BeautifulSoup(html_doc, "html.parser")
birthday = soup.select_one('.key-dates li:-soup-contains("Birthday")')
print(birthday.text.strip())
印刷:
Birthday: Monday 26 April 2021
或者没有 CSS:
birthday = soup.find("li", text=lambda t: "Birthday" in t)
print(birthday.text.strip())
推荐阅读
- r - 为 R 中的整洁数据查找组间共有的变量
- angular - 检测Angular组件中的路线离开
- microsoft-graph-api - 批量注册多个educationUser到educationClass
- java - Java 与 Python 中的类方法调用(一般 OO 问题)
- node.js - 如何使用 Storage SDK v10 for JavaScript 将 blob 从一个容器复制到节点中的另一个容器
- node.js - 使用 AWS Lambda Node.js 12.x 进行 Selenium 测试 - 错误提示“Chromedriver not found”
- java - JsonObject 到 Java 对象
- javascript - 如何在 html 视频弹出窗口中添加关闭按钮?
- python - 创建一个变量以保存来自用户输入的所有数据
- java - 如何使用来自多个不同矩阵的值找到子序列?