И вот я пишу парсеры. На php. Есть функционал в стандартной установке, есть библиотеки для парсинга, есть примеры. Да вот неприятность – владельцам сайтов и хостингов сильно не по душе, когда их парсят и борются с этим всеми средствами. И почти сразу же меня начали блокировать. Я перебрал несколько вариантов, добавлял куки, агентов, настройки, разные варианты и подходы – не получается. Вернее, не получается стабильно.
От парсера требуется совсем немного – нужно получить страницу, построить DOM дерево, получить элемент и его вывести, иногда обработать и записать куда ни будь, обычно в текстовый файл в разных кодировках. Есть неприятные моменты, это то, что в учебниках даются самые простейшие примеры и есть всего два русскоязычных автора по видео, где парсеры именно объясняются как их писать и ещё одно видео школьника, этот школьник умеет писать парсеры, а вот объяснить не может – он ещё не знает терминологии.
Стал искать другие варианты – одни для меня тогда были сложные, другие непонятно как сделать, остановился на питоне (так посоветовали). Попробовал учебные примеры – получилось. Стал писать парсер для моего случая и ничего не получается. Отложил в сторону парсеры, взял учебник питона и стал его листать. Я уже учил этот язык лет десять назад, половину прошёл и забросил, тогда у меня не было для него практического применения. Стал учить заново.
Учебные примеры довольно простые, только какие-то пустые – ну зачем мне срезы, стринговые операции, операции с кортежами? Стал мучать именно парсеры; библиотека BS4 для парсинга рекомендуется во всех статьях и есть несколько видео её применения. Через пару недель по вечерам первый успех – стало собираться со страниц учебных примеров именно то, что мне нужно. И приступил к нужным мне сайтам – тут опять неприятность – на каких-то сайтах получается, на некоторых вообще ничего не получается. То дизайн на сайтах такой, что никак за элемент не зацепится, то пагинация настолько оригинальная, что работает только через стрелки пагинации, разные проблемы.
Мне опять подсказали - нужно использовать Selenium. А это много сложнее, с моими скудными знаниями это было сложно. Только это хоть и медленный и очень непростой вариант, но именно он помог мне получать данные почти с любой страницы. Язык пришлось очень сильно доучить, ушло больше полугода и это на базис. Сейчас нормальные курсы предлагают обучить базе языка за 2,5 года, думаю это реальный срок. Я учил быстрее, под практическую задачу, только у меня от этой учёбы были постоянные головные боли и полное непонимание как что работает.
С тех пор я написал почти сотню парсеров на BS4, и больше 400 парсеров на selenium и до сих пор не всё получается. То с кодировкой проблемы, то с очисткой данных проблемы (так вот зачем в книгах по питону столько места на первый взгляд бесполезного материала ), то не пишется в базу или не могу получить элемент. Вот сейчас опыт больше 500 парсеров, постоянно учу и практикуюсь и не всегда получается написать простой парсер.
И питон на первый взгляд простой язык, на деле оказался настолько же простой, как и php. Во многом они пересекаются, по другому и быть не могло, и всё таки они для разных целей.
И немного попробовал python для модных ныне вещей – распознавание текста, фото, нейронные сети, обработка текста и многое другое. Делал это на основе того, что я неплохо знаю математику и много прикладных вещей, включая статистику. Даже сделал пару небольших сервисов, массово они не взлетели. Тут не всё однозначно, с учётом моего опыта судить сложно, но есть что показать и рассказать. Не пробовал только веб разработку на питоне, на мой взгляд на пыхе это делать проще и выгоднее. И ещё удобно делать математику на python, я напишу что думаю о тех, кто говорит – «программисту математика не нужна». И последнее нужно довольно долго объяснять, продолжу на следующей неделе.