Python BeautifulSoup - строка захвата find_all, окруженная пробелом и новой строкой - PullRequest
1 голос
/ 24 апреля 2020

У меня есть следующие фрагменты HTML, которые являются частью гораздо большей HTML страницы:

<tr >
    <th class="left">
        <span tooltip haspopup="true" class="tip" title="A type of fruit">Oranges</span>:
    </th>
    <td class="reduce">
        Seven
    </td>
</tr>

<tr >
    <th class="left">
        Apples
    </th>
    <td>
        Three
    </td>
</tr>

Когда я выполняю код:

soup.find_all(string='Oranges')

Я получаю :

['Oranges']

Что идеально.

Однако, когда я выполняю код:

soup.find_all(string='Apples')

, я получаю:

[]

Почему нет это работает? У меня есть ощущение, что это связано с пробелами и новой строкой et c вокруг бита 'Apples' в коде HTML, однако я не могу найти его. Я попробовал ниже, которые были бесплодны.

soup.find_all(string='\n        Apples\n    ')

soup.find_all(string='        Apples    ')

soup.find_all(string='         Apples     ')

Буду признателен за вашу помощь! Спасибо.

Ps Я не думаю, что это важно, но в конечном итоге я использую "findParent (). FetchNextSiblings () [0] .text.strip ()" или аналогичный, чтобы получить 'Seven' и «Три» - работает в первом случае, но не во втором.

1 Ответ

1 голос
/ 24 апреля 2020

Попробуйте:

import re
...

soup.find_all(text = re.compile(r"Apples", re.IGNORECASE))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...