Хекслет - это образовательная платформа для изучения языков программирования и является одной из ведущих онлайн-школ (второе место по популярности по данным карьерного портала Мой круг). Мы обучаем профессиям JS-frontend, JS-backend, PHP-программиста, Pyt
1 июля Twitter ввел ограничения на количество постов, отображаемых в ленте. По словам Илона Маска, связано это с высоким уровнем веб-скрейпинга и манипуляциями системы.
А о том, что такое веб-скрейпинг и парсинг, в посте расскажет Владлен, наставник Хекслета по профессии Python-разработчик.
Что такое веб-скрейпинг и почему из-за него вводятся ограничения?
Веб-скрейпинг – это технология, которая предназначена для получения данных с веб-страниц.
Технологию могут использовать, например, для того, чтобы буквально скачать целый сайт: иногда после этого можно поднять локальную копию сайта.
Чаще скрейпингом пользуются для извлечения каких-то данных. Например, человек хочет сделать популярный новостной канал в социальной сети. Для отбора интересных новостей ему необходимо собирать самые популярные посты. Популярность можно определить, например, по количеству просмотров, лайков и комментариев – именно за этими данными погонится создатель новостного канала.
Каким образом данные извлекаются из веб-страниц?
Методы существуют разные. Один из популярных и доступных – использовать парсинг или синтаксический анализ. Суть простая – систематизировать набор текстовой информации.
Путем парсинга можно представить текст как упорядоченную структуру. Из этой структуры мы можем попытаться вычленить необходимые данные.
Как пример возьмем пост Маска (смотрите в комментариях). Глазом сходу можно определить, что в твите нам доступна информация:
Имя пользователя
Верифицирован ли он
Купил ли он подписку
Текст твита
Дата и время публикации
Количество просмотров, ретвитов, цитат, лайков и закладок
Визуально, все отлично, все данные на месте. Но для компьютера эти данные – набор текста, конкретно – HTML. Который на глаз выглядит как какой-то плохо читаемый набор несвязного текста.
Но с помощью парсинга можно вытащить все необходимые данные, преобразовать в Excel-файл, в котором по столбикам будет разложена информация о постах в Твиттере: имя пользователя, текст и так далее.
Где и как часто используется парсинг?
Парсинг данных, возможно, одна из самых часто встречающихся задач у серверных программистов. Ведь основная работа многих серверов – хранить и манипулировать данными. Огромная часть данных при этом – текст.
Как пример, на сервер могут присылать данные в виде HTML/XML/JSON или любого другого формата, из которых нужно вытащить информацию и положить в базу данных. Часто это достаточно простая и рутинная работа. Однако попадаются и более интересные случаи.
Автор статьи лично писал парсер PDF-файлов: все помнят времена короновируса, когда необходимо было при себе иметь сертификат? Именно эти сертификаты парсились с целью вытащить данные для подтверждения пользовательских данных и последующего использования.
Проблемой стало то, что сертификаты начали специально шифровать с целью защиты от парсинга, так как количество подделок резко выросло. Сначала из сертификата данные начали приходить в разном порядке. В дальнейшем из него начала поступать обфусцированная информация, которую вовсе нельзя было прочитать.
Действительно ли веб-скрейпинг повлиял на количество просмотров в Twitter?
Кто знает 🤷♂️
Веб-скрейпинг точно может оказывать значительную нагрузку на сервера. Человек вряд ли прочитает сотню постов за секунду, а программе для сбора данных это под силу. В Twitter вряд ли работает один подобный сборщик, их тысячи, и все они нагружают сервера, потому что могут.
Приложения учитывают эти моменты, ограничивая число запросов в промежуток времени, придумывая новые определители ботов. Но и создатели веб-скрейперов на месте не сидят и придумывают, как обходить все эти ограничения.
Даже после введенных ограничений скорее всего придумают, как эффективно собирать данные. Это вечная борьба.