Используя beautifulSoup, пытаемся получить все строки таблицы, в которых есть строка - PullRequest
2 голосов
/ 09 августа 2010

Мне нужно получить все строки таблицы на странице, которые содержат определенную строку 'abc123123'.

Строка находится внутри TD, но мне нужен весь TR, если он содержит 'abc123123'где-нибудь внутри.

Я пробовал это:

userrows = s.findAll('tr', contents = re.compile('abc123123'))

Я не уверен, является ли содержимое свойством записи.

Мой HTML выглядит примерно так:

<tr>
   <td>
   </td>
   <td><table>.... abc123123 </table><tr>
   ..
</tr>
<tr>
..
</tr>
..
..

1 Ответ

4 голосов
/ 09 августа 2010

Нет, все дополнительные аргументы ключевых слов, помимо указанных (name, attrs, recursive, text, limit), относятся к атрибутам тега, который вы ищете.

Вы не можете искать name и text одновременно (если вы укажете text, BS игнорирует name), поэтому вам нужны отдельные вызовы, например:

allrows = s.findAll('tr')
userrows = [t for t in allrows if t.findAll(text=re.compile('abc123123'))]

Здесь я использую понимание списка, так как я предполагаю, что вам нужен список соответствующих объектов тегов, как дает findAll.

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