Автор: 22->23
Скрипт для чтения комментариев любого пользователяНавеяно постом http://old.reactor.cc/post/3643230Вкратце: пользователь muted решил написать скрипт (вот этот), который обрабатывает его комментарии: формирует .csv-файл с таблицей, куда включены данные по каждому из комментариев, а также .html-файл, представляющий собой интерактивный график с кликабельными точками, соответствующими тому или иному комменту.Я же на его основе решил написать ещё один, вынимающий комментарии любого пользователя Реактора и данные по ним (ссылка)На вход этому скрипту подаётся юзернейм или же ссылка на профиль пользователя. Результат — .xlsx-файл — таблица с подробными данными по комментариям — и интерактивный график по аналогии с первоначальным скриптомКак этим воспользоваться?Для работы этого скрипта нужен Python (проверял на версии 3.6) и либы к нему (написаны в заголовке скрипта), а также скачать скрипт как .py-файл (кнопка clone в заголовке пасты на Pastebin). Когда все эти действия совершены, можно приступать.Для работы скрипта в Windows можно использовать командную строку. При этом необходимо вначале указать конкретную папку, куда программа будет записывать выходные файлы. После чего указывается путь к интерпретатору Python, потом через пробел путь к скрипту, чтобы запустить его:После того как началась работа скрипта, через некоторое время появляется надпись:type 1 to enable reading modetype 2 to enable continuation modetype 3 to enable updating mode>>Первоначально вводим 1 (про два других режима будет написано ниже). После чего возникает ещё одно сообщение:you have two options now: you can either enter usernameor paste the link to his or her profiletype 1 to do the first thing and type 2 to do the other one>>Если вы собираетесь вводить юзернейм, набирайте 1, Enter, а потом копируйте юзернейм. Если для вас предпочтительнее копировать ссылку, то жмёте 2, Enter и потом копируете ссылку на профиль нужного пользователя. В данном случае для примера наберу 1 и имя какого-нибудь пользователя:Поехали!Доступ к комментариям осуществляется со страницы комментариев у пользователя (в данном примере http://old.reactor.cc/user/procxela/comments). При обработке каждого отдельного комментария скрипт получает ссылку на пост, проверяет, не был ли пост обработан ранее. Если нет, то осуществляется переход к посту по ссылке, а затем в посте ищутся все комментарии нужного пользователя и вынимается инфа из них: дата, время, ссылка на пост, ссылка на комментарий, рейтинг, текст и медиа (картинка или видео, если присутствует). Когда с данным постом скрипт отработал, то id этого поста запоминается, и скрипт больше не обрабатывает его.В конце концов скрипт обрабатывает все страницы комментариев и сохраняет следующие файлы:— Искомую таблицу в виде .xlsx-файла (в данном примере получилась такая таблица)— Интерактивный график (например, такой. Чтобы увидеть результат во всей красе, скачайте файл и откройте скачанный файл)— Кроме того, через каждые 15 минут производится копирование в резервный файл data backup.xlsx. Если работа скрипта завершена успешно, то он больше не нужен— Текстовый файл лога. В нём написано то же самое, что выдавала консоль. Опять же, если всё прошло нормально, то он не нужен.Режимы работы скриптаКак было уже указано, есть какие-то три режима у этого скрипта: reading mode, continuation mode, updating mode. Первый описан выше.Второй режим (continuation mode)Этот режим нужен, если по какой-то причине запись комментариев прервалась раньше времени. Как им воспользоваться?Во-первых, опять запускаем этот же скрипт из той же папки, куда сохранялись файлы. Далее, после сообщения о выборе режима набираем 2, жмём Enter. После чего появится сообщение:Enter name of the excel file or paste path to it>>Вот тут уже понадобится файл бекапа (сохранён в той же папке, к концу имени дописано слово backup). Пишем его имя или копируем путь к нему. А потом:Для того, чтобы знать, какой номер страницы ввести, нужно зайти в лог-файл (сохраняется в той же папке как log.txt), найти самую последнюю надпись Successfully saved, а над ней — вторую снизу надпись вида page number %число%. Например,Вводим это число и жмём Enter:Таким образом, можно продолжать записывать комменты в уже существующую таблицу, начиная с некоторой страницы комментариев пользователя (он определяется автоматически по уже имеющейся в таблице информации). После успешного завершения continuation мода сохраняются те же файлы, что и в режиме чтения.Третий режим (updating mode)Этот режим нужен, если ранее была записана таблица всех комментариев какого-то пользователя, но с тех пор прошло достаточно много времени, и хотелось бы обновить таблицу новыми комментами. Воспользоваться им можно следующим образом:При запросе режима нажимаем 3. Потом, как и во втором режиме, скрипт просит название файла или путь к нему, вводим его. А затем скрипт определяет, чьи это комменты, и начинает читать все комментарии этого пользователя с первой страницы до тех пор, пока не обнаружатся старые, уже записанные комментарии. При этом перед чтением новых комментов производится резервное копирование таблицы в ту же папку (только оно осуществляется уже единожды, а не каждые 15 минут, как в других режимах, так что если фейл, то надо начинать сначала).Учтён так же тот фактор, что рейтинги отдельных уже записанных комментариев могли поменяться (которым на момент записи таблицы было не старше 2 дней). Скрипт находит новые значения рейтингов для них и перезаписывает в той же таблице, где они сохранены.Чтение всех комментов, по моим подсчётам, выполняется со скоростью где-то 300-400 страниц в час (если комментов у пользователя больше, то скорость замедляется из-за бекапания больших таблиц).Если тот или иной комментарий, доступный со страницы пользователя, не был прочтён, то это свидетельствует о том, что коммент оставлен или в посте, или в ветке комментариев, который(ая) в последствии был(а) забанен(а).И немного данных напоследокПроанализированы комментарии следующих пользователей (с ссылками на таблицы и графиками по ним): · Таблица22->23ТаблицаВождьТаблицакрокозябрТаблицаЛеснойТаблицаФиговинаТаблицаAgoweТаблицаArtertonТаблицаixekonТаблицаktulhu74ТаблицаMactep XyeBТаблицаrobert paulsonТаблицаTEXHO3ABPAТаблицаXmontТаблицаZamfertiyТаблицаСсылки на .html-файлы, кому нужно: https://drive.google.com/drive/folders/1gK626pcWhIewlq86NkVauk4LykTNs0Ul?usp=sharingРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3658066″ }, «headline»: «Скрипт для чтения комментариев любого пользователя Навеяно постом http://old.reactor.cc/post/3643230 / реактор :: комменты Реактора :: длиннопост», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/%D1%80%D0%B5%D0%B0%D0%BA%D1%82%D0%BE%D1%80-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D1%8B-%D0%A0%D0%B5%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B0-%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D0%BF%D0%BE%D1%81%D1%82-4731877.png», «height»: 427, «width»: 823 }, «datePublished»: «2018-09-28T15:40:29+03:00», «dateModified»: «2018-09-28T15:40:29+03:00», «author»: { «@type»: «Person», «name»: «22->23» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «Вкратце: пользователь muted решил написать скрипт (вот этот), который обрабатывает его комментарии: формирует .csv-файл с таблицей, куда включены данные по каждому из комментариев, а также .html-файл, представляющий собой интерактивный график с кликабельными точками, соответствующими тому или иному » }
Комментировать
Пост №3658066
Source: Joyreactor