How to find text I am looking for in the following HTML (line breaks marked with n)?
...
<tr>
<td class="pos">n
"Some text:"n
<br>n
<strong>some value</strong>n
</td>
</tr>
<tr>
<td class="pos">n
"Fixed text:"n
<br>n
<strong>text I am looking for</strong>n
</td>
</tr>
<tr>
<td class="pos">n
"Some other text:"n
<br>n
<strong>some other value</strong>n
</td>
</tr>
...
The code below returns first found value, so I need to filter by "Fixed text:" somehow.
result = soup.find('td', {'class' :'pos'}).find('strong').text
UPDATE: If I use the following code:
title = soup.find('td', text = re.compile(ur'Fixed text:(.*)', re.DOTALL), attrs = {'class': 'pos'})
self.response.out.write(str(title.string).decode('utf8'))
then it returns just Fixed text:, not the <strong>-highlighted text in that same element.
Advertisement
Answer
You can pass a regular expression to the text parameter of findAll, like so:
import BeautifulSoup
import re
columns = soup.findAll('td', text = re.compile('your regex here'), attrs = {'class' : 'pos'})