Утро доброе.
Есть задание, сделать парсеры для определенных сайтов. Все желательно без API
Одни из этих сайтов - Linkedin, Instagram.
У меня довольно необычный (наверно) вопрос. В этом деле я совсем новичек, решил делать с помощью библиотек: BS4, fake_user, Scrapy, Selenium, Requests. Собственно когда добрался до инсты, столкнулся с проблемой, что подргрузка страницы осуществляется динамически, то есть:
Фото инстраграма (хтмл именно) грузится кусками, если откроем профиль - будет 12, пролистаем вниз, будет не все кол-во, а только часть. Как я понял, с помощью Аякса, ну и то, что сама Инста на Реакте, Вирт DOM (если я не прав, извините, поправьте пожалуйста). Выход я нашел в лице Selenium.
Что я делаю:
Запускаю прогу, Селениум заходит в браузер, авторизуется, выбирает нужного пользователя (которого хочу скрапить) и с помощью прописанного скрипта Скролл вниз на JS, собственно скролит вниз :) Собираю фото, хеш-теги к фото, основную информацию страницы, так же, как и Фото, открываю список подписчиков, скролю определенное кол - во и собираю список их. Все заливаю в Эксель/csv, фото просто выгружаю в папку.
Скажите пожалуйста, как можно проще? Я понимаю, возможно я делаю СОВСЕМ не правильно, но опыта нет.
С Linkedin примерно такая же ситуация. (Селениум - Авторизация - Гуглю 'Python Developer' - Беру определенное кол-во - Каждого открываю, беру инфу и добавляю).
На очереди Твитер, все же наверно через API буду :)
Я понимаю, но посыл был простой - задание без АПИ, а почему, потому что потому. Наверно, руководствовался преподаватель тем, что АПИ ограничены в функционале. Мой вопрос как проще, без АПИ :)
Значит разбирайте весь трафик который отправляет и получает сайт вручную и на GET'ах и POST'ах реализуйте.
Кстати, это достаточно просто.
Кстати, а чем сейчас не устраивает Selenium?
TchernyavskyDaniil,
Так и нужно спрашивать - как сделать так что бы работало быстрее, быстрее и проще - никак.
Просто быстрее:
1. api
2. снифать запросы сайта которые получают нужные тебе данные, и отправлять их вручную.
TchernyavskyDaniil, и еще, ускорить парсинг вы можете используя много-поточность к примеру, или в селениуме запретить загрузку css, img и так далее (ссылки на картинки и т.п останутся), просто браузер не будет рендерить лишние элементы которые замедляют скорость загрузки.
Да, я это сам понимаю разумеется) Преподаватель сказал так, я тут мало что могу поделать, код он проверит, увидит Апишки и будет не очень.
Хороший бонус. А то приходится ВПН юзать.
TchernyavskyDaniil, как бывший "вроде нормальный преподаватель" могу пожаловаться на рамки учебного процесса и утвержденные методички в которых понятия API вобще не существует. Так что если следовать букве учебного процесса, на выходе будете знать фортран и делфи. Да даже чертовы уроки БД превращались в цирк по документам