Как организовать строки из Selenium в Pandas Dataframe? - PullRequest
0 голосов
/ 11 февраля 2020

** Я пытаюсь извлечь данные из чата WhatsApp, но у меня возникают проблемы с отправкой данных на фрейм данных.

У меня есть код: **

chatroom = driver.find_element_by_class_name('_1_q7u')

pos= 0
df = pd.DataFrame(columns=['Time','Msgs'], index=None)

for ol in chatroom.find_elements_by_class_name('message-in'):
    data = []
    msgs = ol.find_elements_by_class_name('woe4f')
    times = ol.find_elements_by_class_name('_1RNhZ')
    for msg in msgs:
        data.append(msg.text)
    for time in times:
        data.append(time.text)
    df.loc[pos] = data
    pos+=1
    print(df)

** Возникла ошибка: «ValueError: невозможно установить строку с несовпадающими столбцами», но когда я получаю код для работы, он приносит мне только первый Elemnets во времени и MSG, мне нужно, чтобы все они были организованы.

Нуб пытается здесь код. **

1 Ответ

0 голосов
/ 11 февраля 2020

Итак, если вы хотите что-то добавить в информационный фрейм с lo c, вам нужно убедиться, что вещь, которую вы перетаскиваете, имеет те же размеры, что и ваш df. Поскольку у вас есть 2 столбца, вам нужно 2 вещи ... Вы можете достичь этого, поместив свое время в список и ваши сообщения в список.

chatroom = driver.find_element_by_class_name('_1_q7u')

pos= 0
df = pd.DataFrame(columns=['Time','Msgs'], index=None)

for ol in chatroom.find_elements_by_class_name('message-in'):
    msgs = [k.text for k in ol.find_elements_by_class_name('woe4f')]
    times = [k.text for k in ol.find_elements_by_class_name('_1RNhZ')]
    df.loc[pos] = [times,msgs]
    pos+=1
    print(df)
...