Целью этого кода является очистка веб-страницы и извлечение данных из таблицы, а затем преобразование ее во фрейм данных 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 неправильно вызван!