我正在尝试创建一种从休止的html中提取文本的特定方法。
</table>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>Close Date:</td>
<td> June 19, 2008</td>
我的问题是为什么会这样:
soup.find('td', text=re.compile('Close'))
返回:
<td>Close Date:</td>
但是,当我尝试做更具体的事情时,它什么也不会返回。
soup.find('td', text=re.compile('Close Date:'))
我想使脚本尽可能具体,以便可以在多个网页中运行该脚本而不会拾取错误的文本。
最佳答案
Close
和Date
之间可能有不间断的空格。在这种情况下,您可以使用\s+
匹配1个或多个空格:
print(soup.find('td', text=re.compile('Close\s+Date:')))
例如,
import re
import bs4 as bs
content = '''\
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>Close Date:</td>
<td> June 19, 2008</td>
'''
soup = bs.BeautifulSoup(content, 'lxml')
print(soup.find('td', text=re.compile('Close\s+Date:')))
产量
<td>Close Date:</td>
关于python - BeautifulSoup4 soup.find('tag',text = re.compile('my text'))仅有时有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41411443/