Присвоить извлеченный текст из таблицы HTML переменной для последующего использования — Beautiful Soup / Python 3.7

#python #python-3.x #beautifulsoup #python-3.7 #nextsibling

#python #python-3.x #beautifulsoup #python-3.7 #nextsibling

Вопрос:

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

Текущий код

 r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')
           
# Find xxxxxxx (row-by-row) and split trailing zeros
row = soup.find_all('td', string="xxxxxxx")
for r in row:
        LE = r.nextSibling
        while LE.name != 'td' and LE is not None:
                LE = LE.nextSibling
  

Основная проблема, с которой я сталкиваюсь (это, вероятно, очень просто, и я только что смотрел на это так долго), заключается в том, что мне нужно присвоить переменной ФАЙЛА значение nextSibling.

ФАЙЛ отформатирован как «001234», где мне нужно удалить начальные нули, чтобы в качестве переменной было «1234».

Если я напечатаю переменную, print(LE.text[2:6]) результат будет правильным. Реализованный в коде как, LE = LE.nextSibling.text[2:6] ничего не производит.

Я пробовал следующие инструкции, но ни одна из них не работает, и я надеюсь на рекомендации.

 LE = LE.nextSibling.text[2:6]
amp;
LE = LE.text[2:6]
  

Мне нужно, чтобы это было присвоено переменной после извлечения, чтобы использовать переменную позже в моем скрипте.
Я заранее признателен за помощь!

РЕДАКТИРОВАТЬ —> включенный исходный код:

 <tr>
     <td class='label' nowrap title="xxxxxxx">TEXT TO FIND</td>
     <td class='attribute'>001234</td>
</tr>
  

Комментарии:

1. Пожалуйста, поделитесь URL-адресом

2. @MendelG — Я могу предоставить только исходный код, поскольку вы не сможете войти на веб-сайт, поскольку он основан на сервере. Дайте мне знать, если вам нужна дополнительная информация.

Ответ №1:

Вы можете использовать next_sibling дважды, а затем использовать strip() для удаления 0 :

 from bs4 import BeautifulSoup

html = """<tr>
     <td class='label' nowrap title="xxxx">TEXT TO FIND</td>
     <td class='attribute'>001234</td>
</tr>"""

soup = BeautifulSoup(html, "html.parser")

for tag in soup.select(".label"):
    le = ''.join([t.strip("0") for t in tag.next_sibling.next_sibling])
    print(tag.text)
    print(le)
  

Вывод:

 TEXT TO FIND
1234
  

Комментарии:

1. Ценю помощь, но я считаю, что нашел проблему (глупая ошибка) — я опубликую ее. Если у меня возникнут проблемы, я снова обращусь к вам!

Ответ №2:

Изменить:

!= Для ==

  row = soup.find_all('td', string="xxxxxx")
            for r in row:
                LE = r.nextSibling
                    LE = LE.text[2:6]