使用BeautifulSoup的findAll搜索html元素的innerText以获得与搜索属性相同的结果?

Jac*_*ack 5 python beautifulsoup

例如,如果我通过像id这样的元素属性进行搜索:

soup.findAll('span',{'id':re.compile("^score_")})
Run Code Online (Sandbox Code Playgroud)

我找回了匹配的整个span元素的列表(我喜欢).

但是,如果我尝试通过html元素的innerText搜索,如下所示:

soup.findAll('a',text = re.compile("discuss|comment")) 
Run Code Online (Sandbox Code Playgroud)

我只返回元素后面的innerText部分,而不是像我上面那样使用标签和属性来匹配整个元素.

这可能与找到匹配然后得到它的父母有关吗?

谢谢.

nos*_*klo 6

你没有收回文字.你得到一个NavigableString文本.该对象有方法去父母等.

from BeautifulSoup import BeautifulSoup
import re

soup = BeautifulSoup('<html><p>foo</p></html>')

r = soup.findAll('p', text=re.compile('foo'))

print r[0].parent
Run Code Online (Sandbox Code Playgroud)

版画

<p>foo</p>
Run Code Online (Sandbox Code Playgroud)