BeautifulSoup найти тег div по тексту внутри - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть этот HTML-формат

<tr>
  <th>
    <div>USING THIS TEXT</div>
  </th>
  <td>
    <div class="plainlist">
      <ul>
        <li>
           "GET THIS TEXT HERE"
           <span> 
             " ("
             <span class="bday"> "AND GET THIS TEXT HERE"
             ")"
           </span>
        </li>
      </ul>
    </div>
  </td>
</tr>

Я выяснил, как получить доступ к неупорядоченному списку, используя find и id, но я не уверен, как это сделать, когда div, которого я хочу, неУ меня есть идентификатор, но только текст, который я могу использовать.

Если бы был идентификатор, то код Python был бы

test = soup.find(id="[SOME_ID]")
        if test is not None:
            ul = cast.find_next('ul')
            for li in ul.findAll('li'):
                if(li is not None):
                    print(li.text)

Но я не уверен, как это получить "проверить значение, зная только текст внутри div, а не id.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 26 февраля 2019

Вам нужно импортировать модуль re, чтобы найти тег по text.try. Это даст мне знать, если это работает.

import bs4
import re
html_doc="""<html><tr>
  <th>
    <div>USING THIS TEXT</div>
  </th>
  <td>
    <div class="plainlist">
      <ul>
        <li>
           "GET THIS TEXT HERE"
           <span>
             " ("
             <span class="bday"> "AND GET THIS TEXT HERE"
             ")"
           </span>
        </li>
      </ul>
    </div>
  </td>
</tr></html>"""
soup = bs4.BeautifulSoup(html_doc, 'html.parser')
test=soup.find('div' , text=re.compile("USING THIS TEXT"))
if test is not None:
            ul = test.find_next('ul')
            for li in ul.findAll('li'):
                if(li is not None):
                    print(li.text)

Вывод:

"GET THIS TEXT HERE"

             " ("
              "AND GET THIS TEXT HERE"
             ")"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...