У меня есть 6 тегов div, вложенных в тег div, как мне использовать красивый суп и проанализировать этот результат в 6 разных столбцах с пандами. Пожалуйста, приведите пример изображения

#python #pandas

Вопрос:

Пример изображения того, что я хочу

Я пытался

     import re from bs4
    import BeautifulSoup
    import pandas as pd
    import csv
    
    file = "<body><table class="gb-widget-data_table ext-widget-data_table ext-widget-data_table-striped">
        <tbody>
        <tr class="gb-widget-data_table_row_header ext-widget-data_table_row_header">
            <td class="gb-widget-data_table_row_column_header ext-widget-data_table_row_column_header">ID</td>
            <td class="gb-widget-data_table_row_column_header ext-widget-data_table_row_column_header">Date/Time</td>
            <td class="gb-widget-data_table_row_column_header ext-widget-data_table_row_column_header">Results</td>
        </tr>
        <tr class="gb-widget-data_table_row ext-widget-data_table_row">
            <td class="gb-widget-data_table_row_column ext-widget-data_table_row_column">16213393</td>
            <td class="gb-widget-data_table_row_column ext-widget-data_table_row_column">03/07/2021 10:20</td>
            <td class="gb-widget-data_table_row_column ext-widget-data_table_row_column gb-widget-data_table_row_column-small-paddings">
                <div>
                    <div class="gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-blue_ball">
                        3
                    </div>
                    <div class="gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-yellow_ball">
                        2
                    </div>
                    <div class="gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-yellow_ball">
                        8
                    </div>
                    <div class="gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-yellow_ball">
                        20
                    </div>
                    <div class="gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-yellow_ball">
                        35
                    </div>
                    <div class="gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-red_ball">
                        10
                    </div>
                </div>
            </td>
        </tr>
        </tbody>
    </table></body>"
        soup = BeautifulSoup(file, 'html.parser')
    
    match = soup.find_all('div', class_=re.compile('^gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-'))
    match = soup.div
    okays = match.find('div', class_=re.compile('^gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-'))
    
    print(okays)
 

Ответ №1:

Вот один из способов, начиная с вашей match линии. Вы можете вставить остальные столбцы, чтобы заполнить свой фрейм данных.

    match = soup.find_all('div', class_=re.compile('^gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-'))
    res = []
    for m in match:
        # print(m.text.strip())
        res.append([m.text.strip()])
    
    cols=['Results1','Results2','Results3','Results4','Results5','Results6']
    pd.DataFrame(dict(zip(cols,res)))
 

Выход:

   Results1 Results2 Results3 Results4 Results5 Results6
0        3        2        8       20       35       10
 

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

1. Большое спасибо, братан, я действительно ценю

2. Рад помочь. Если вы можете принять ответ, это было бы здорово

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

4. Однако как мне получить репутацию 15?