Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.
Получение данных c веб-сайта без API в 3 строки кода на Python
70042

Рассказываем о том, как можно сэкономить время и нервы при автоматизации процесса получения данных с веб-сайтов без соответствующего API-интерфейса.
Предположим, что в поисках данных, необходимых для вашего проекта, вы натыкаетесь на такую веб-страницу:
Вот они — все необходимые данные для вашего проекта.
Но что же делать, если нужные вам данные находятся на сайте, который не предоставляет API для их получения? Конечно же, можно потратить несколько часов и написать обработчик, который получит эти данные и преобразует их в нужный для вашего приложения формат.
Но есть и более простое решение — это библиотека Pandas и ее встроенная функция read_html()
, которая предназначена для получения данных с html-страниц.
Прим. перев. В данной статье используется версия Pandas 0.20.3
Да, все настолько просто. Pandas находит html-таблицы на странице и возвращает их как новый объект DataFrame
.
Теперь попробуем указать Pandas, что первая (а точнее нулевая) строка таблицы содержит заголовки столбцов, а также попросим ее сформировать datetime
-объект из строки, находящейся в столбце с датой и временем.
На выходе мы получим следующий результат:
Теперь все эти данные находятся в DataFrame
-объекте. Если же нам нужны данные в формате json, добавим еще одну строчку кода:
В результате вы получите данные в формате json с правильным форматированием даты по стандарту ISO 8601:
При желании данные можно сохранить в CSV или XLS:
Выполните код и откройте файл calls.csv
. Он откроется в приложении для работы с таблицами:
И, конечно же, Pandas упрощает анализ:
Статистика запроса:
Группировку:
Результат группировки:
И обработку данных:
Результат метода unique
:
Теперь вы знаете, как с помощью Python и Pandas можно быстро получить данные с практически любого сайта, не прилагая особых усилий. Освободившееся время предлагаем посвятить чтению других интересных материалов по Python на нашем сайте.
70042
Что думаете?
3 комментария
Сначала интересные
Во-первых, pd.read_html возвращает не DataFrame а список в котором на нулевом индексе лежит DataFrame, а во-вторых pd.read_html почему то не считывает запятые при чтении тех же валют.
можете пожалуйста сказать, что делать если при выполнении кода он записывается как то так \u0423 \"\u0420\u043e\u0441\u0441\u0435\u043b\u044c\u0445\u043e\u0437\u0446\u0435\u043d\u0442\u0440\" \u043f\u043e \u041a\u0430\u043b\u0438\u043d\u0438\u043d\u0433\u0440\u0430\u0434\u0441\u043a\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0420\u043e\u0441\u0441 RU \u0414\u0421 1.6.1.039.005
что с этим можно сделать, заранее спасибо

Не работает ни один код...