简单问题 - 在 <td> 和 </td> 标签之间搜索忽略新行的文本
Simple question - searching for text in between <td> and </td> tags ignoring new lines
我的问题可能很简单。我用 BS 抓取网页。在汤中,我确实想搜索文本(此处:示例)。
现在,如果汤中的内容看起来像(摘录):
<!DOCTYPE html>
<td>example</td>
它完美地完成了工作并输出了文本(示例)。
但是在某些场合下内容是:
<!DOCTYPE html>
<td>
example
</td>
没有找到。我想这是因为我搜索的文本没有被压缩在 <td>
和 <\td>
标签之间。
我使用的代码是:
temp = soup.find(text = 'example')
希望有人能回答这个可能非常基本的问题。
那是因为在您的第二个示例中,文本不再等于 example
,因为它包含现在属于文本一部分的换行符。因此,您的搜索必须从“euqals”更改为“包含”。而且,在 beautifulsoup 的情况下,需要正则表达式。
假设这是你的 html:
test = """<!DOCTYPE html>
<doc>
<td>
example
</td>
<td>example2</td>
<td>unrelated</td>
</doc>"""
那么你需要
import re
最后
for entry in soup.find_all(text=re.compile("example")):
print(entry.strip())
输出:
example
example2
顺便说一句,在更复杂的 html/xml 和搜索中,不推荐使用正则表达式。您可能必须切换到像 lxml 这样的库。
我的问题可能很简单。我用 BS 抓取网页。在汤中,我确实想搜索文本(此处:示例)。
现在,如果汤中的内容看起来像(摘录):
<!DOCTYPE html>
<td>example</td>
它完美地完成了工作并输出了文本(示例)。
但是在某些场合下内容是:
<!DOCTYPE html>
<td>
example
</td>
没有找到。我想这是因为我搜索的文本没有被压缩在 <td>
和 <\td>
标签之间。
我使用的代码是:
temp = soup.find(text = 'example')
希望有人能回答这个可能非常基本的问题。
那是因为在您的第二个示例中,文本不再等于 example
,因为它包含现在属于文本一部分的换行符。因此,您的搜索必须从“euqals”更改为“包含”。而且,在 beautifulsoup 的情况下,需要正则表达式。
假设这是你的 html:
test = """<!DOCTYPE html>
<doc>
<td>
example
</td>
<td>example2</td>
<td>unrelated</td>
</doc>"""
那么你需要
import re
最后
for entry in soup.find_all(text=re.compile("example")):
print(entry.strip())
输出:
example
example2
顺便说一句,在更复杂的 html/xml 和搜索中,不推荐使用正则表达式。您可能必须切换到像 lxml 这样的库。