python - BeautifulSoup,使用正则表达式获得比预期更多的回报
问题描述
使用 BeautifulSoup,我有以下行:
dimensions = SOUP.select(".specs__title > h4", text=re.compile(r'Dimensions'))
但是,它返回的不仅仅是具有“Dimensions”文本的标签,如以下结果所示:
[<h4>Dimensions</h4>, <h4>Details</h4>, <h4>Warranty / Certifications</h4>]
我是否以 SOUP 的工作方式错误地使用了正则表达式?
解决方案
该select
接口没有text
关键字。在我们继续之前,以下假设您使用的是 BeautifulSoup 4.7+。
如果您想按文本过滤,您可以执行以下操作:
dimensions = SOUP.select(".specs__title > h4:contains(Dimensions)")
有关:contains()
伪类实现的更多信息,请参见:https ://facelessuser.github.io/soupsieve/selectors/#:contains 。
编辑:澄清一下,目前没有办法将正则表达式直接合并到select
调用中。您必须在使用正则表达式之后过滤元素。将来可能有一种方法可以通过一些自定义伪类来使用正则表达式,但目前 Soup Sieve 中没有这样的功能(Beautiful Soup 在 4.7+ 中的选择实现)。
推荐阅读
- c# - 使用c#访问远程windows机器文件
- asp.net - 如何在 Kentico 电子邮件模板中包含 Google 字体?
- sorting - 为什么我的 $sort Operator on dates 函数在我的查询中不一致?
- mysqli - MySQL查询显示结果超出范围
- javascript - Angular 抱怨无法读取未定义的属性
- python-3.7 - python-lambda-local self = reduction.pickle.load(from_parent)
- qt - $$[QT_HOST_DATA/get] 在 Qt 功能配置 (.prf) 文件中做了什么?
- c# - .Net Core 下的 XSD 持续时间
- python - 如何从 python pandas 中的 json 文件中提取非嵌套列?
- javafx - 带有 javaFX 的网页视图