конструктор dataframe для селеновых панд неправильно вызван - PullRequest
0 голосов
/ 24 сентября 2018

Целью этого кода является очистка веб-страницы и извлечение данных из таблицы, а затем преобразование ее во фрейм данных Pandas.

Очистка и извлечение данных прошли успешно.

Выводвыглядит так:

Дата выпуска

Время

Фактический

Прогноз

Предыдущий

Сен 09, 2018(Авг)

21: 30

0,7%

0,5%

0,3%

08 августа 2018 (июль)

21: 30

0,3%

0,2%

-0,1%

09 июля 2018 года (июнь)

21: 30

-0,1%

0,1%

-0,2%

08 июня 2018 года (май)

21: 30

-0,2%

-0,1%

-0,2%

09 мая 2018 года (апрель)

21: 30

-0,2%

-0,1%

-1,1%

10 апреля 2018 (март)

21:30

-1,1%

-0,5%

1,2%

08 марта 2018 (февраль)

21: 30

1,2%

0,8%

0,6%

08 февраля 2018 г. (январь)

21: 30

0,6%

0,7%

0,3%

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

Вот код:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd

url = 'https://www.investing.com/economic-calendar/chinese-cpi-743'

driver = webdriver.Chrome(r"D:\Projects\Tutorial\Driver\chromedriver.exe")
driver.get(url)
wait = WebDriverWait(driver,10)

while True:
    try:
        item = wait.until(EC.visibility_of_element_located((By.XPATH,'//*[contains(@id,"showMoreHistory")]/a')))
        driver.execute_script("arguments[0].click();", item)
    except Exception:break

for table in wait.until(EC.visibility_of_all_elements_located((By.XPATH,'//*[contains(@id,"eventHistoryTable")]//tr'))):
    data = [item.text for item in table.find_elements_by_xpath(".//*[self::td or self::th]")]
    for data in data:
        df = pd.DataFrame(data.strip(), columns=['Release Date', 'Time', 'Actual', 'Forecast', 'Previous'])
        print(df)

Вот ошибка:

Трассировка (последний последний вызов):

Файл "D: /Projects/Tutorial/ff.py", строка 22, в df = pd.DataFrame (data.strip (), columns = ['Дата выпуска', 'Время', 'Факт', 'Прогноз', 'Предыдущий'])

Файл "C: \ Users \ Sayed \ Anaconda3 \ lib \site-packages \ pandas \ core \ frame.py ", строка 422, в init повысить ValueError ('Конструктор DataFrame неправильно вызван!')

ValueError: Конструктор DataFrame неправильно вызван!

1 Ответ

0 голосов
/ 24 сентября 2018

Просто внесите изменения в последнюю часть

df = pd.DataFrame(columns=['Release Date', 'Time', 'Actual', 'Forecast', 'Previous'])
pos =  0
for table in wait.until(EC.visibility_of_all_elements_located((By.XPATH,'//*[contains(@id,"eventHistoryTable")]//tr'))):
    data = [item.text for item in table.find_elements_by_xpath(".//*[self::td]")]
    if data:
        df.loc[pos] = data[0:5]
        pos+=1
print(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...