我的问题可能很简单。我用BS刮了一个网页。在汤里,我确实想搜索一个文本(这里:示例(。
现在,如果汤中的内容看起来像(摘录(:
<!DOCTYPE html>
<td>example</td>
它完美地完成了工作并输出了文本(示例(。
然而,在某些情况下,内容是:
<!DOCTYPE html>
<td>
example
</td>
它没有找到它。我想这是因为我搜索的文本没有被压缩在<td>
和<td>
标签之间。
我使用的代码是:
temp = soup.find(text = 'example')
希望有人能回答这个可能非常基本的问题。
这是因为在第二个示例中,文本不再等于example
,因为它包含换行符,这些换行符现在是文本的一部分。因此,您的搜索必须从";euqals";至";包含";。在beautifulsoup的情况下,这需要正则表达式。
假设这是你的html:
test = """<!DOCTYPE html>
<doc>
<td>
example
</td>
<td>example2</td>
<td>unrelated</td>
</doc>"""
然后你需要
import re
最后是
for entry in soup.find_all(text=re.compile("example")):
print(entry.strip())
输出:
example
example2
顺便说一句,在更复杂的html/xml和搜索中,不建议使用regex。您可能需要切换到像lxml这样的库。