От 1 строки (все данные) до 10 строк данных в кадре из библиотеки панд - PullRequest
0 голосов
/ 12 июня 2018

Преобразовать одну строку (все данные) и разделить на 10 строк данных в формате dataframe (Python библиотеки Python)?используя следующий код, спасибо большое!

# -*- coding:UTF-8 -*-

from pyvirtualdisplay import Display
from bs4 import BeautifulSoup
from selenium import webdriver

display = Display(visible=0, size=(1024, 768))
display.start()

driver = webdriver.Firefox()
driver.get("http://www.fdmbenzinpriser.dk/searchprices/5/")

lines = [event.text for event in driver.find_elements_by_xpath('//table[@id="sortabletable"]')]
print lines

driver.close()
display.stop()

Выходная мощность:

[u'  Pris Adresse\nTidspunkt\n\n* Denne pris er indberettet af selskabet Indberet pris\n 8.99  Odinsvej 2 4100 Ringsted 8 timer 47 m\n 9.09  Sdr.Havnegade 3 6000 Kolding 11 timer 39 m\n 9.09  Vestermarksvej 2 6600 Vejen 13 timer 27 m\n 10.99  Kastanievej 2 5800 Nyborg 17 timer 52 m\n 10.99  Vestvejen 95 6200 Aabenraa 17 timer 52 m\n 10.99  Gammel \xc5rhusvej 3 8940 Randers SV 17 timer 52 m\n 10.99  Frederiksv\xe6rksgade 87 3400 Hiller\xf8d 17 timer 52 m\n 10.99  Egelundsvej 5 2620 Albertslund 17 timer 52 m\n 10.99  B\xf8sbrovej 92B 8940 Randers SV 17 timer 52 m\n 10.99  Milnersvej 47 3400 Hiller\xf8d 17 timer 52 m']

Ожидаемая производительность:

Pris                               Adresse       Tidspunkt
8.99              Odinsvej 2 4100 Ringsted   8 timer 47 m
9.09          Sdr.Havnegade 3 6000 Kolding  11 timer 39 m
9.09           Vestermarksvej 2 6600 Vejen  13 timer 27 m
10.99            Kastanievej  2 5800 Nyborg  17 timer 52 m
10.99            Vestvejen 95 6200 Aabenraa  17 timer 52 m
10.99     Gammel Århusvej 3 8940 Randers SV  17 timer 52 m
10.99   Frederiksværksgade 87 3400 Hillerød  17 timer 52 m
10.99        Egelundsvej 5 2620 Albertslund  17 timer 52 m
10.99         Bøsbrovej 92B 8940 Randers SV  17 timer 52 m
10.99           Milnersvej 47 3400 Hillerød  17 timer 52 m

1 Ответ

0 голосов
/ 12 июня 2018

Просто получая текст (event.text), вы теряете информацию о уже существующей html-таблице.

Переключите его на получение externalHTML:

table = [event.get_attribute('outerHTML') for event in driver.find_elements_by_xpath('//table[@id="sortabletable"]')]

Затем выполните:

import pandas as pd
df = pd.read_html(table[0])

Что приводит к:

[                                           Unnamed: 0   Pris                        Adresse      Tidspunkt
0                                                 NaN   8.99       Odinsvej 2 4100 Ringsted  11 timer 55 m
1                                                 NaN   9.09   Sdr.Havnegade 3 6000 Kolding  14 timer 48 m
2                                                 NaN   9.09    Vestermarksvej 2 6600 Vejen  16 timer 35 m
3                                                 NaN  10.99  Bøsbrovej 92B 8940 Randers SV   21 timer 1 m
4                                                 NaN  10.99  Janesvej 9 2680 Solrød Strand   21 timer 1 m
5                                                 NaN  10.99   Nyborgvej 114 5700 Svendborg   21 timer 1 m
6                                                 NaN  10.99  Ishøj Strandvej 78 2635 Ishøj   21 timer 1 m
7                                                 NaN  10.99     Vodskovvej 16 9310 Vodskov   21 timer 1 m
8                                                 NaN  10.99      Sprogøvej 1 9800 Hjørring   21 timer 1 m
9                                                 NaN  10.99   Hovedvejen 4 8361 Hasselager   21 timer 1 m
10  * Denne pris er indberettet af selskabet Indbe...    NaN                            NaN            NaN]

Вам придется немного очистить панд, но ваш существующий код был довольно близок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...