Задать вопрос
@Deffero

Как распарсить файл в табличной верстке через beatifulsoap?

необходимо распарсить файл вот такого содержания, через python. Я пытаюсь вытащить наименование программы и ее версию. Это пример файла, верстка всегда будет такого формата, однако, количество программ которые придут неизвестно. Для работы использую библиотеку BeatifulSoup.

Код

<!-- SW -->
<TABLE WIDTH=100%>
    <TD CLASS=pt><A NAME="installed programs">Установленные программы</A>
        <TR>
            <TD>
                <HR>
</TABLE>
<TABLE>
    <TR>
        <TD WIDTH=16>&nbsp;
        <TD WIDTH=16>
        <TD>
        <TD>
        <TD>
        <TD>
        <TD>
        <TD>
    <TR>
        <TD>
        <TD>
        <TD><B>Программа</B>&nbsp;&nbsp;
        <TD CLASS=cr><B>Версия</B>&nbsp;&nbsp;
        <TD CLASS=cr><B>Размер</B>&nbsp;&nbsp;
        <TD><B>GUID</B>&nbsp;&nbsp;
        <TD><B>Издатель</B>&nbsp;&nbsp;
        <TD CLASS=cr><B>Дата</B>
    <TR>
        <TD>
        <TD>
        <TD>64 Bit HP CIO Components Installer&nbsp;&nbsp;
        <TD CLASS=cr>16.2.1&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>{F8F948EA-5AEA-4158-8821-A2F788ECE936}&nbsp;&nbsp;
        <TD>Hewlett-Packard&nbsp;&nbsp;
        <TD CLASS=cr>2023-05-18
    <TR>
        <TD>
        <TD>
        <TD>HP LaserJet Pro M201-M202&nbsp;&nbsp;
        <TD CLASS=cr>15.0.16064.399&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>{e71f6d30-080d-43ef-87e0-1ac4d7f8adfa}&nbsp;&nbsp;
        <TD>Hewlett-Packard&nbsp;&nbsp;
        <TD CLASS=cr>
    <TR>
        <TD>
        <TD>
        <TD>HP Unified IO&nbsp;&nbsp;
        <TD CLASS=cr>2.0.0.434&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>{F1390872-2500-4408-A46C-CD16C960C661}&nbsp;&nbsp;
        <TD>HP&nbsp;&nbsp;
        <TD CLASS=cr>2023-05-18
    <TR>
        <TD>
        <TD>
        <TD>HP Update&nbsp;&nbsp;
        <TD CLASS=cr>5.005.002.002&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>{912D30CF-F39E-4B31-AD9A-123C6B794EE2}&nbsp;&nbsp;
        <TD>Hewlett-Packard&nbsp;&nbsp;
        <TD CLASS=cr>2023-05-18
    <TR>
        <TD>
        <TD>
        <TD>Mesh Agent&nbsp;&nbsp;
        <TD CLASS=cr>2022-12-02 22:42:16.000+03:00&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>Mesh Agent&nbsp;&nbsp;
        <TD>&nbsp;&nbsp;
        <TD CLASS=cr>
    <TR>
        <TD>
        <TD>
        <TD>Microsoft Edge&nbsp;&nbsp;
        <TD CLASS=cr>132.0.2957.115&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>Microsoft Edge&nbsp;&nbsp;
        <TD>Корпорация Майкрософт&nbsp;&nbsp;
        <TD CLASS=cr>2025-01-20
    <TR>
        <TD>
        <TD>
        <TD>Microsoft Office LTSC профессиональный плюс 2021 - ru-ru&nbsp;&nbsp;
        <TD CLASS=cr>16.0.14332.20345&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>ProPlus2021Volume - ru-ru&nbsp;&nbsp;
        <TD>Microsoft Corporation&nbsp;&nbsp;
        <TD CLASS=cr>
    <TR>
        <TD>
        <TD>
        <TD>Microsoft Update Health Tools&nbsp;&nbsp;
        <TD CLASS=cr>3.74.0.0&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>{1FC1A6C2-576E-489A-9B4A-92D21F542136}&nbsp;&nbsp;
        <TD>Microsoft Corporation&nbsp;&nbsp;
        <TD CLASS=cr>2023-11-14
    <TR>
        <TD>
        <TD>
        <TD>Mozilla Firefox (x64 ru)&nbsp;&nbsp;
        <TD CLASS=cr>134.0.1&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>Mozilla Firefox 134.0.1 (x64 ru)&nbsp;&nbsp;
        <TD>Mozilla&nbsp;&nbsp;
        <TD CLASS=cr>
    <TR>
        <TD>
        <TD>
        <TD>Mozilla Maintenance Service&nbsp;&nbsp;
        <TD CLASS=cr>113.0.1&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>MozillaMaintenanceService&nbsp;&nbsp;
        <TD>Mozilla&nbsp;&nbsp;
        <TD CLASS=cr>
    <TR>
        <TD>
        <TD>
        <TD>Office 16 Click-to-Run Extensibility Component&nbsp;&nbsp;
        <TD CLASS=cr>16.0.14332.20345&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>{90160000-008C-0000-1000-0000000FF1CE}&nbsp;&nbsp;
        <TD>Microsoft Corporation&nbsp;&nbsp;
        <TD CLASS=cr>2023-05-18
    <TR>
        <TD>
        <TD>
        <TD>Office 16 Click-to-Run Licensing Component&nbsp;&nbsp;
        <TD CLASS=cr>16.0.14332.20345&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>{90160000-007E-0000-1000-0000000FF1CE}&nbsp;&nbsp;
        <TD>Microsoft Corporation&nbsp;&nbsp;
        <TD CLASS=cr>2023-05-18
    <TR>
        <TD>
        <TD>
        <TD>Office 16 Click-to-Run Localization Component [Русский (Россия)]&nbsp;&nbsp;
        <TD CLASS=cr>16.0.14332.20281&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>{90160000-008C-0419-1000-0000000FF1CE}&nbsp;&nbsp;
        <TD>Microsoft Corporation&nbsp;&nbsp;
        <TD CLASS=cr>2023-05-18
    <TR>
        <TD>
        <TD>
        <TD>STDU Viewer version 1.6.361.0&nbsp;&nbsp;
        <TD CLASS=cr>1.6.361.0&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>STDU Viewer_is1&nbsp;&nbsp;
        <TD>STDUtility&nbsp;&nbsp;
        <TD CLASS=cr>2023-05-18
    <TR>
        <TD>
        <TD>
        <TD>Update for x64-based Windows Systems (KB5001716)&nbsp;&nbsp;
        <TD CLASS=cr>8.94.0.0&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>{DA80A019-4C3B-4DAA-ACA1-6937D7CAAF9E}&nbsp;&nbsp;
        <TD>Microsoft Corporation&nbsp;&nbsp;
        <TD CLASS=cr>2024-10-16
    <TR>
        <TD>
        <TD>
        <TD>VixWin Platinum&nbsp;&nbsp;
        <TD CLASS=cr>3.50.000&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>{81695582-88F8-47A6-8431-C10617AF058A}&nbsp;&nbsp;
        <TD>Gendex&nbsp;&nbsp;
        <TD CLASS=cr>2023-05-19
    <TR>
        <TD>
        <TD>
        <TD>WinRAR 6.21 (64-разрядная)&nbsp;&nbsp;
        <TD CLASS=cr>6.21.0&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>WinRAR archiver&nbsp;&nbsp;
        <TD>win.rar GmbH&nbsp;&nbsp;
        <TD CLASS=cr>
    <TR>
        <TD>
        <TD>
        <TD>КриптоПро CSP&nbsp;&nbsp;
        <TD CLASS=cr>5.0.12330&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>{50F91F80-D397-437C-B0C8-62128DE3B55E}&nbsp;&nbsp;
        <TD>Компания КриптоПро&nbsp;&nbsp;
        <TD CLASS=cr>2023-05-18
    <TR>
        <TD>
        <TD>
        <TD>КриптоПро ЭЦП Browser plug-in [Русский (Россия)]&nbsp;&nbsp;
        <TD CLASS=cr>2.0.14816&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>{E12CC7EE-36B7-4AAA-924E-2F5CD75BCECF}&nbsp;&nbsp;
        <TD>Компания КриптоПро&nbsp;&nbsp;
        <TD CLASS=cr>2023-05-18
    <TR>
        <TD>
        <TD>
        <TD>Платные услуги К1-1&nbsp;&nbsp;
        <TD CLASS=cr>0.1&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>{E59C5221-50B3-420C-84C0-DF40A1AC280E}&nbsp;&nbsp;
        <TD>Maximus&nbsp;&nbsp;
        <TD CLASS=cr>2023-05-18
    <TR>
        <TD>
        <TD>
        <TD>Среда выполнения Microsoft Edge WebView2 Runtime&nbsp;&nbsp;
        <TD CLASS=cr>131.0.2903.146&nbsp;&nbsp;
        <TD CLASS=cr>Неизвестно&nbsp;&nbsp;
        <TD>Microsoft EdgeWebView&nbsp;&nbsp;
        <TD>Корпорация Майкрософт&nbsp;&nbsp;
        <TD CLASS=cr>2025-01-16
</TABLE><BR><BR>

  • Вопрос задан
  • 124 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
У тебя всегда таблица в htnl используй подходящуюю структуру данных пандас датафрейм.

import pandas as pd
from io import StringIO  
html = '''<!-- SW --><TABLE WIDTH=100%><TD CLASS=pt><A NAME="installed programs">Установленные программы</A><TR><TD><HR></TABLE><TABLE><TR><TD WIDTH=16>&nbsp;<TD WIDTH=16><TD><TD><TD><TD><TD><TD>
<TR><TD><TD><TD><B>Программа</B>&nbsp;&nbsp;<TD CLASS=cr><B>Версия</B>&nbsp;&nbsp;<TD CLASS=cr><B>Размер</B>&nbsp;&nbsp;<TD><B>GUID</B>&nbsp;&nbsp;<TD><B>Издатель</B>&nbsp;&nbsp;<TD CLASS=cr><B>Дата</B>
<TR><TD><TD><TD>64 Bit HP CIO Components Installer&nbsp;&nbsp;<TD CLASS=cr>16.2.1&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{F8F948EA-5AEA-4158-8821-A2F788ECE936}&nbsp;&nbsp;<TD>Hewlett-Packard&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
<TR><TD><TD><TD>HP LaserJet Pro M201-M202&nbsp;&nbsp;<TD CLASS=cr>15.0.16064.399&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{e71f6d30-080d-43ef-87e0-1ac4d7f8adfa}&nbsp;&nbsp;<TD>Hewlett-Packard&nbsp;&nbsp;<TD CLASS=cr>
<TR><TD><TD><TD>HP Unified IO&nbsp;&nbsp;<TD CLASS=cr>2.0.0.434&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{F1390872-2500-4408-A46C-CD16C960C661}&nbsp;&nbsp;<TD>HP&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
<TR><TD><TD><TD>HP Update&nbsp;&nbsp;<TD CLASS=cr>5.005.002.002&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{912D30CF-F39E-4B31-AD9A-123C6B794EE2}&nbsp;&nbsp;<TD>Hewlett-Packard&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
<TR><TD><TD><TD>Mesh Agent&nbsp;&nbsp;<TD CLASS=cr>2022-12-02 22:42:16.000+03:00&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>Mesh Agent&nbsp;&nbsp;<TD>&nbsp;&nbsp;<TD CLASS=cr>
<TR><TD><TD><TD>Microsoft Edge&nbsp;&nbsp;<TD CLASS=cr>132.0.2957.115&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>Microsoft Edge&nbsp;&nbsp;<TD>Корпорация Майкрософт&nbsp;&nbsp;<TD CLASS=cr>2025-01-20
<TR><TD><TD><TD>Microsoft Office LTSC профессиональный плюс 2021 - ru-ru&nbsp;&nbsp;<TD CLASS=cr>16.0.14332.20345&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>ProPlus2021Volume - ru-ru&nbsp;&nbsp;<TD>Microsoft Corporation&nbsp;&nbsp;<TD CLASS=cr>
<TR><TD><TD><TD>Microsoft Update Health Tools&nbsp;&nbsp;<TD CLASS=cr>3.74.0.0&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{1FC1A6C2-576E-489A-9B4A-92D21F542136}&nbsp;&nbsp;<TD>Microsoft Corporation&nbsp;&nbsp;<TD CLASS=cr>2023-11-14
<TR><TD><TD><TD>Mozilla Firefox (x64 ru)&nbsp;&nbsp;<TD CLASS=cr>134.0.1&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>Mozilla Firefox 134.0.1 (x64 ru)&nbsp;&nbsp;<TD>Mozilla&nbsp;&nbsp;<TD CLASS=cr>
<TR><TD><TD><TD>Mozilla Maintenance Service&nbsp;&nbsp;<TD CLASS=cr>113.0.1&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>MozillaMaintenanceService&nbsp;&nbsp;<TD>Mozilla&nbsp;&nbsp;<TD CLASS=cr>
<TR><TD><TD><TD>Office 16 Click-to-Run Extensibility Component&nbsp;&nbsp;<TD CLASS=cr>16.0.14332.20345&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{90160000-008C-0000-1000-0000000FF1CE}&nbsp;&nbsp;<TD>Microsoft Corporation&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
<TR><TD><TD><TD>Office 16 Click-to-Run Licensing Component&nbsp;&nbsp;<TD CLASS=cr>16.0.14332.20345&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{90160000-007E-0000-1000-0000000FF1CE}&nbsp;&nbsp;<TD>Microsoft Corporation&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
<TR><TD><TD><TD>Office 16 Click-to-Run Localization Component [Русский (Россия)]&nbsp;&nbsp;<TD CLASS=cr>16.0.14332.20281&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{90160000-008C-0419-1000-0000000FF1CE}&nbsp;&nbsp;<TD>Microsoft Corporation&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
<TR><TD><TD><TD>STDU Viewer version 1.6.361.0&nbsp;&nbsp;<TD CLASS=cr>1.6.361.0&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>STDU Viewer_is1&nbsp;&nbsp;<TD>STDUtility&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
<TR><TD><TD><TD>Update for x64-based Windows Systems (KB5001716)&nbsp;&nbsp;<TD CLASS=cr>8.94.0.0&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{DA80A019-4C3B-4DAA-ACA1-6937D7CAAF9E}&nbsp;&nbsp;<TD>Microsoft Corporation&nbsp;&nbsp;<TD CLASS=cr>2024-10-16
<TR><TD><TD><TD>VixWin Platinum&nbsp;&nbsp;<TD CLASS=cr>3.50.000&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{81695582-88F8-47A6-8431-C10617AF058A}&nbsp;&nbsp;<TD>Gendex&nbsp;&nbsp;<TD CLASS=cr>2023-05-19
<TR><TD><TD><TD>WinRAR 6.21 (64-разрядная)&nbsp;&nbsp;<TD CLASS=cr>6.21.0&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>WinRAR archiver&nbsp;&nbsp;<TD>win.rar GmbH&nbsp;&nbsp;<TD CLASS=cr>
<TR><TD><TD><TD>КриптоПро CSP&nbsp;&nbsp;<TD CLASS=cr>5.0.12330&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{50F91F80-D397-437C-B0C8-62128DE3B55E}&nbsp;&nbsp;<TD>Компания КриптоПро&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
<TR><TD><TD><TD>КриптоПро ЭЦП Browser plug-in [Русский (Россия)]&nbsp;&nbsp;<TD CLASS=cr>2.0.14816&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{E12CC7EE-36B7-4AAA-924E-2F5CD75BCECF}&nbsp;&nbsp;<TD>Компания КриптоПро&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
<TR><TD><TD><TD>Платные услуги К1-1&nbsp;&nbsp;<TD CLASS=cr>0.1&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{E59C5221-50B3-420C-84C0-DF40A1AC280E}&nbsp;&nbsp;<TD>Maximus&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
<TR><TD><TD><TD>Среда выполнения Microsoft Edge WebView2 Runtime&nbsp;&nbsp;<TD CLASS=cr>131.0.2903.146&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>Microsoft EdgeWebView&nbsp;&nbsp;<TD>Корпорация Майкрософт&nbsp;&nbsp;<TD CLASS=cr>2025-01-16
</TABLE><BR><BR>
'''
table = pd.read_html(StringIO(html),header=[1])[0]
print(table)


Все задача решается в одну строчку кода table = pd.read_html(StringIO(html),header=[1])[0]затем выбираешь нужные тебе колонки, параметр header это с какой строки считать имя колонок, на другом примере его значение может, отличатся, по этому можешь его опустить, а выяснить нужные локации колонок, уже после.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы