Python 3.+ парсер ресурса с выводом из БД на GUI. Как лучше реализовать?
Ребята, всем доброго времени суток. Ранее не занимался парсингом, говоря честно, а в большей мере занимался разработкой на django + flask + frontend, поэтому не имею достаточно знаний для того, чтобы реализовать задачу с нуля.
Задача : написать html парсер, который выносит все данные из БД в GUI, но есть некоторые особенности.
- должна быть простая аутентификация, потому что ресурс закрытый и данные может извлечь только пользователь
- вывод будет на GUI в сортируемую таблицу(pyQt делает это из коробки вроде?) и графиком. Также должна быть выведена разница между новыми и старыми ценами.
- очень глубокое html дерево
- обновление БД должно быть каждый день, а после должен быть проведен анализ новых добавленных товар со старыми, а после вывод на GUI в сортируемые список
- вывод товаров сайта сделан с помощью pagination и ajax, поэтому парсер должен получать данные, учитывая эти особенности
Друзья, как и чем проще реализовать эту задачу, исходя из вышеперечисленных данных? Спасибо огромное за помощь!
Только не понятно откуда все-таки данные грабить, из БД или какого-то закрытого ресурса. Парсер обычно не выносит никакие данные из БД в GUI, его задача: залезть на какой-нибудь ресурс, достать оттуда данные, преобразовать их структуру и сохранить в БД, xml, csv, json...
Почему бы просто не сохранять в csv, а в качестве GUI использовать Excel?
Артем: можно и его, зависит от задачи, мне он не нравится тем, что у него свое апи, тогда как большинство библиотек в разных языках работают с xpath, соответственно мне проще один раз выучить xpath, чем учить апи, которое больше нигде не используется. Плюс lxml включает в себя BeautifulSoup. Еще можно загуглить BeautifulSoup vs lxml. Там подробно описаны плюсы и минусы обоих. Ну и так, чисто поржать
Артем: хм, надо, наверное, еще плюсы супа перечислить, а то как-то однобоко получилось: круто детектит кодировки, работает со сломанным html(хотя к lxml у меня в этом плане претензий не было), чистый питон - просто поставить и работать.