我正在尝试创建一种从休止的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:'))


我想使脚本尽可能具体,以便可以在多个网页中运行该脚本而不会拾取错误的文本。

最佳答案

CloseDate之间可能有不间断的空格。在这种情况下,您可以使用\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&nbsp;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/

10-12 18:33