使用BeautifulSoup,我有以下一行:
dimensions = SOUP.select(".specs__title > h4", text=re.compile(r'Dimensions'))
但是,返回的结果不仅仅是这些带有“ Dimensions”文本的标签,如以下结果所示:
[<h4>Dimensions</h4>, <h4>Details</h4>, <h4>Warranty / Certifications</h4>]
我使用SOUP的方式使用正则表达式不正确吗?
答案 0 :(得分:2)
select
界面没有text
关键字。在继续之前,以下假设您使用的是BeautifulSoup 4.7 +。
如果您想按文本进行过滤,则可以执行以下操作:
dimensions = SOUP.select(".specs__title > h4:contains(Dimensions)")
有关:contains()
伪类实现的更多信息,请参见:https://facelessuser.github.io/soupsieve/selectors/#:contains。
编辑:为澄清起见,目前尚无办法将正则表达式直接合并到select
调用中。使用正则表达式后,您将不得不过滤元素。将来可能会有通过自定义伪类使用正则表达式的方法,但目前Soup Sieve(4.7+中的Beautiful Soup的select实现)没有这种功能。