如何在HTML文档中查找字符串,忽略空格?

时间:2013-08-21 19:26:31

标签: python html-parsing beautifulsoup

我试图在许多HTML页面中找到一个字符串“USB 2 ports”。问题是字符串前面有大量的空白区域 - 有时是4个,20个甚至50个空格字符。

以下内容适用于我的字符串前面的单个空格字符:

soup.find(text=' USB 2 ports')

请注意USB之前的单个空格。

如何告诉Beautiful Soup find()找到我的字符串而忽略所有前面的空格?

1 个答案:

答案 0 :(得分:2)

您可以定义regular expression来搜索文本,而不管前导和尾随空格如何:

import re
pattern = re.compile(r'\s*%s\s*' % 'USB 2 ports')
result = soup.find(text=pattern)

例如:

>>> soup = BeautifulSoup("""
... <html>
...   <body>
...     <ul>
...       <li>
...         USB 2 ports
...       </li>
...       <li>
...         Firewire ports
...       </li>
...       <li>
...         HDMI ports
...       </li>
...     </ul>
...   </body>
... </html>
... """)
>>> import re
>>> pattern = re.compile(r'\s*%s\s*' % 'USB 2 ports')
>>> soup.find(text=pattern)
u'\n        USB 2 ports\n      '

编辑:我已经更改了上面的代码,以明确地将soup.find()的结果分配给变量,希望能够更清楚地了解正在发生的事情。为了清晰起见,我最初在你的示例代码之后在我的答案中对代码进行了建模,但我现在怀疑你可能对代码实际上做了什么感到困惑。