#python-3.x #pandas #web-scraping
#python-3.x #панды #очистка веб-страниц
Вопрос:
на данный момент я очищаю таблицу следующим образом
tab_list = pd.read_html(f"{base_url}{page}.html")
df = tab_list[0]
df.dropna(axis=0, inplace=True)
df.to_csv(f"{folder}/{page}.csv", index=False, sep=";", encoding="iso-8859-1")
Но я хотел бы сохранить файлы по дате, которую я хотел бы удалить со страницы с помощью запросов.
Поэтому я подумал, что могу использовать content.text в функции pd.read_html(), но это не работает:
content = requests.get(f"{base_url}{page}")
tab_list = pd.read_html(content.text())
df = tab_list[0]
df.dropna(axis=0, inplace=True)
df.to_csv(f"{folder}/{page}.csv", index=False, sep=";", encoding="iso-8859-1")
приводит к
Ошибка типа: объект ‘str’ не вызывается
Нужно ли сначала сохранять content.text()? Моим текущим обходным решением было бы сначала запустить requests.get() и очистить сайт с помощью pd.read_html() во второй раз.
Ответ №1:
Проблема, с которой вы столкнулись, связана с типами. Да, python — это язык утиного ввода, но важно понимать, когда мы можем отправлять строку и где мы должны предоставлять байты. Особенно при работе с операциями ввода-вывода.
В вашем случае вы должны использовать content.content
(ответ в виде байтов) вместо content.text()
(ответ в виде строки)
Итак, код должен быть похож:
content = requests.get(f"{base_url}{page}")
tab_list = pd.read_html(content.content)
df = tab_list[0]
df.dropna(axis=0, inplace=True)
df.to_csv(f"{folder}/{page}.csv", index=False, sep=";", encoding="iso-8859-1")