Рубрика «парсинг»

Карточка компании — документ, который в России присылают друг другу все: поставщики, заказчики, подрядчики. В нём ИНН, КПП, адрес и банковские реквизиты. Формата у карточки нет: кто‑то делает таблицу в Word, кто‑то строку в PDF, кто‑то лист Excel. Подписи пишут как угодно: «Р/с», «Расчетный счет №», «р.сч.», «Счёт получателя».

Я делаю веб‑сервис, где пользователь загружает такую карточку, а программа заполняет реквизиты сама. Ниже — что сработало, а что нет, с кодом.

Почему не работает «искать по подписи»

Первая версия была очевидной: найти слово «БИК» и взять 9 цифр после него. Она ломалась в трёх местах.

  1. Читать полностью »

Есть тип задач, который выглядит как «нажми кнопку и скачай файл», а на деле упирается в три вещи: кабинет не отдаёт данные за нужный период целиком, позиции чеков лежат отдельно от шапок, а выгружать надо не разово, а каждую неделю. В статье — как это устроено у меня изнутри, с кодом и с тем, что ломалось.

Что вообще есть в кабинете оператора

Читать полностью »

Поиск узкопрофильных вакансий (например, n8n‑инженер или специалист по интеграциям) через RSS‑ленты превращается в борьбу с шумом. Простые текстовые фильтры по ключевым словам «автоматизация» или «API» дают массу ложных срабатываний: от «менеджеров по автоматизации продаж» до «руководителей API‑команд».

В этой статье я разберу архитектуру end‑to‑end пайплайна на n8n, который использует LLM (Groq API) для жесткого семантического скоринга каждой вакансии. Мы не просто ищем совпадения, а заставляем ИИ работать строгим техническим рекрутером, отсеивая 90% мусора на входе.

Читать полностью »

Упавший скрипт меня не пугает. Он падает, крон пишет в лог, в телеграм прилетает ошибка, я иду чинить. Неприятно, но честно.

Пугает другое. Скрипт, который каждое утро бодро отчитывается «статей к проверке: 30», месяцами работает и месяцами обрабатывает не те данные.

Читать полностью »

Привет! (И тебе, IT‑шник, который хочет разобраться, что в 2026 вообще здесь происходит? Сейчас разберёмся, но легче тебе от этого не станет).

Каждая вакансия — это маленькое письмо от работодателя. В нём есть «дружная семья», «стрессоустойчивость», «опыт от 3 лет», ДМС, печеньки и иногда даже зарплата. Мы читаем такие письма каждый день, листаем, вздыхаем и жмём «Откликнуться». А что, если прочитать их все сразу, и тысячами…, сконвертировать стоимость каждой фразы в рубль? Сколько работодатель готов платить, если он пишет, что мы «дружная семья»Читать полностью »

Когда говорят о парсинге на Python, в один список обычно складывают BeautifulSoup, Selenium, Scrapy и Playwright. Выглядит как выбор из четырёх аналогов, но это инструменты разных уровней. BeautifulSoup не умеет ходить в сеть. Selenium вообще не парсер. Scrapy — фреймворк, внутри которого можно использовать любой парсер. Сравнивать их в лоб — примерно как сравнивать двигатель, коробку передач и такси.

На практике эта путаница обходится дорого. Для сбора каталога из пары тысяч страниц поднимают Selenium с Chrome, хотя данные лежат в обычном HTML. Или наоборот: полдня пытаются вытащить requests’ом то, что рисует JavaScript, и не понимают, откуда в ответе пустой <div id="root">Читать полностью »

Идея была простая и на вид очевидная: на маркетплейсах Telegram-подарков постоянно появляются лоты дешевле рыночной цены. Купил дешевле, выставил по рынку, забрал разницу. Ботов там, в отличие от криптобирж, почти нет.

Я написал систему, которая две недели непрерывно собирала данные с трёх площадок — Portals, Tonnel и MRKT, — а потом честно проверила эту идею.

Ответ: заработать нельзя. Не «сложно», не «нужно быстрее» — нельзя в принципе, и я могу показать это цифрами. Ниже — как измерял, что получилось и где были ловушки, в которые я сам чуть не попал.

Все данные и код открыты, ссылки в конце.

Что собрано

Шаблон находит слово, смысл он не проверяет: одна цитата со страницы и две её трактовки

Шаблон находит слово, смысл он не проверяет: одна цитата со страницы и две её трактовки

Читать полностью »

Постановка

Есть список публичных адресов Telegram. По каждому надо ответить на два вопроса: существует ли он и что это за сущность. Дальше у каналов прочитать публичное превью и классифицировать содержимое.

Никакого API: MTProto для такой задачи избыточен, а веб-превью Telegram отдаёт всё нужное обычным GET. Казалось бы, сорок строк на fetch и разбор.

Ловушка 1. Несуществующий адрес отвечает 200

Первое предположение: раз имя свободно, будет 404. Не будет.

GET https://t.me/zzqqxx_not_a_real_channel_9182
HTTP/2 200
<meta property="og:title" content="Telegram: Contact @zzqqxx_not_a_real_channel_9182">
<meta property="og:image" content="https://telegram.org/img/t_logo_2x.png">
<meta property="og:description" content="">

Читать полностью »

Привет! (И тебе, IT‑шник, который хочет разобраться, что в 2026 вообще здесь происходит? Сейчас разберёмся, но легче тебе от этого не станет).

У меня была статья, где я спарсил 62 000 Python вакансий с hh и внезапно выкопал довольно дикие вещи? (Если не видели, то советую сначала перечитать её, но это не обязательно). Мои исследования тогда закончились тем, что hh в апреле 2026 просто прикрыл API и на этом вся аналитика оборвалась. Хотя я вообще‑то планировал собирать данные целый год, а не какие‑то несчастные 9 месяцев.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js