正如它所说的那样。是否有搜索整个DOM的特定文本,例如 CAPTCHA 字?
答案 0 :(得分:3)
您可以使用find
并指定text
参数:
使用文本,您可以搜索字符串而不是标记。和名字一样 关键字参数,你可以传入一个字符串,一个正则表达式, 列表,函数或值True。
>>> from bs4 import BeautifulSoup
>>> data = """
... <div>test1</div>
... <div class="myclass1">test2</div>
... <div class="myclass2">CAPTCHA</div>
... <div class="myclass3">test3</div>"""
>>> soup = BeautifulSoup(data)
>>> soup.find(text='CAPTCHA').parent
<div class="myclass2">CAPTCHA</div>
如果CAPTCHA
只是文字的一部分,您可以将lambda
函数传递到text
并检查CAPTCHA
是否在标记文字中:
>>> data = """
... <div>test1</div>
... <div class="myclass1">test2</div>
... <div class="myclass2">Here CAPTCHA is a part of a sentence</div>
... <div class="myclass3">test3</div>"""
>>> soup = BeautifulSoup(data)
>>> soup.find(text=lambda x: 'CAPTCHA' in x).parent
<div class="myclass2">Here CAPTCHA is a part of a sentence</div>
或者,如果将正则表达式传递给text
:
>>> import re
>>> soup.find(text=re.compile('CAPTCHA')).parent
<div class="myclass2">Here CAPTCHA is a part of a sentence</div>