我正在尝试创建一种特定的方法来从停止的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>
我想让脚本尽可能具体,以便我可以通过多个网页运行它而不会收到错误的文本。
答案 0 :(得分:1)
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>