BeautifulSoup4 soup.find('tag',text = re.compile('my text'))有时只能工作

时间:2016-12-31 20:18:55

标签: python python-3.x web-scraping beautifulsoup

我正在尝试创建一种特定的方法来从停止的HTML中提取文本。

g().then( result => console.log(result) );

我的问题是为什么之类的:

</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>

我想让脚本尽可能具体,以便我可以通过多个网页运行它而不会收到错误的文本。

1 个答案:

答案 0 :(得分:1)

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>