Как очистить определенную строку HTML, которая следует за другой строкой HTML - PullRequest
1 голос
/ 25 июня 2019

Я хочу собрать некоторые данные с html-страницы, которая выглядит примерно так

<tr>
 <td> Some information <td>
 <td> 123 </td>
</tr>
<tr>
 <td> some other information </td>
 <td> 456 </td>
</tr>
<tr>
 <td> and the info continues </td>
 <td> 789 </td>
</tr>

Что я хочу, так это получить строку html, которая следует за данной строкой html.То есть, если я вижу «некоторую другую информацию», мне нужен вывод «456».Я думал о том, чтобы объединить регулярное выражение с .find_next от BeautifulSoup, но мне не повезло с этим (я также не очень знаком с регулярным выражением).Кто-нибудь знает, как это сделать?Заранее спасибо большое

1 Ответ

1 голос
/ 25 июня 2019

На самом деле с сочетанием regex и find_next в BeautifulSoup вы можете достичь того, что вы хотите:

from bs4 import BeautifulSoup
import re

html = """
<tr>
 <td> Some information <td>
 <td> 123 </td>
</tr>
<tr>
 <td> some other information </td>
 <td> 456 </td>
</tr>
<tr>
 <td> and the info continues </td>
 <td> 789 </td>
</tr>
"""

soup = BeautifulSoup(html)
x = soup.find('td', text = re.compile('some other information'))
print(x.find_next('td').text)

выход

456

РЕДАКТИРОВАТЬ заменено x.find_next('td').contents[0] на x.find_next('td').text, короче

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...