Веб-скрепинг - это мощная техника извлечения данных с веб-сайтов, но к ней нужно подходить ответственно. Одним из важнейших элементов веб-скреппинга является понимание и соблюдение файла robots.txt. В этой статье мы подробно рассмотрим robots.txt, его роль в веб-скреппинге и лучшие практики, которым следует следовать.
Что такое robots.txt?
Файл robots.txt - это стандарт, используемый веб-сайтами для взаимодействия с веб-краулерами и ботами. В нем указывается, к каким частям сайта могут или не могут получить доступ автоматические системы. Хотя robots.txt в первую очередь предназначен для поисковых систем, он также влияет на практику веб-скреппинга.
Назначение
Основная цель robots.txt - указать веб-краулерам (например, поисковым системам), какие страницы или разделы сайта им разрешено просматривать или индексировать. Это может помочь предотвратить появление определенного контента в результатах поисковых систем, управлять нагрузкой на сервер и контролировать доступность частной или конфиденциальной информации. С его помощью администраторы сайтов контролируют и управляют деятельностью веб-краулеров, предотвращая перегрузку и защищая конфиденциальные данные.
Расположение
Файл robots.txt должен быть размещен в корневом каталоге сайта. Например, он должен быть доступен через http://www.example.com/robots.txt.
Формат
Файл состоит из простого текста и имеет базовую структуру. Он включает в себя директивы, которые указывают, какие пользовательские агенты (боты) должны следовать тем или иным правилам.
Общие директивы:
-
Пользовательский агент
Определяет, к какому веб-ползуну применяются следующие правила.
Например: User-agent: *
Звездочка (*) - это подстановочный знак, который применяется ко всем ботам. -
Запретить
Указывает, какие пути или страницы не должны быть доступны для краулера.
Например: Запретить: /private/
Это запрещает ботам просматривать любые URL, начинающиеся с /private/. -
Разрешить
Отменяет директиву Disallow для определенных путей.
Например: Разрешить: /private/public-page.html
Это позволяет краулерам получить доступ к public-page.html, даже если /private/ запрещен. -
Ползучая задержка
Устанавливает задержку между запросами, чтобы управлять нагрузкой на сервер.
Например: Задержка при ползании: 10 -
Карта сайта
Указывает местоположение XML sitemap, чтобы помочь краулерам эффективнее находить и индексировать страницы.
Например: Карта сайта: http://www.example.com/sitemap.xml
Пример файла robots.txt
User-agent: * Запретить: /private/ Разрешить: /private/public-page.html Crawl-delay: 12 Sitemap: http://www.example.com/sitemap.xml
Дополнительные соображения
- Некоторые поисковые системы устанавливают ограничение на размер
robots.txt
файла, обычно 500 КБ. Убедитесь, что файл не превышает этот лимит. - Сайт
robots.txt
файл должен использовать кодировку UTF-8. Использование других кодировок может помешать корректному разбору. - Некоторые краулеры (например, Googlebot) поддерживают использование подстановочных знаков в
Запретить
иРазрешить
директивы (например,*
для любых символов,$
для конца строки).Запретить: /private/* Запретить: /temp/$
- Сайт
robots.txt
файла чувствителен к регистру. Например,/Admin/
и/admin/
это разные пути. - Люди могут использовать
#
символ для добавления комментариев в файл, которые игнорируются краулерами, но могут помочь администраторам понять и поддерживать файл.# Предотвращение доступа всех краулеров к страницам администратора User-agent: * Запретить: /admin/
- Перед применением
robots.txt
файл в рабочую среду, используйте инструменты (например, robots.txt Tester в Google Search Console), чтобы проверить правила и убедиться, что они работают так, как ожидалось. - Для больших сайтов или сайтов с динамическим содержимым может потребоваться динамическая генерация
robots.txt
файл. Убедитесь, что сгенерированный файл всегда действителен и включает все необходимые правила. - Не все краулеры подчиняются
robots.txt
правила файлов, поэтому для защиты конфиденциального содержимого от вредоносных краулеров могут потребоваться дополнительные меры (например, серверные брандмауэры, черные списки IP-адресов и т.д.). - Если вы хотите запретить поисковым системам индексировать определенные страницы, но разрешить краулерам обращаться к ним для получения другого содержимого, используйте параметр
noindex
метатег вместоЗапретить
..
- Постарайтесь сохранить
robots.txt
Файл прост и избегайте слишком сложных правил. Сложные правила трудно поддерживать, и они могут привести к потенциальным ошибкам разбора.
Как robots.txt влияет на веб-скрапинг
-
Рекомендации для ползунов
Основная функция robots.txt заключается в предоставлении инструкций для веб-краулеров о том, какие части сайта не должны быть доступны. Например, если файл или каталог запрещен в robots.txt, ожидается, что краулеры будут избегать этих областей.
-
Уважение к robots.txt
- Этичный скраппинг: Многие этичные веб-скреперы и краулеры придерживаются правил, указанных в robots.txt, из вежливости к владельцам сайтов и чтобы не перегружать сервер.
- Юридические соображения: Игнорирование robots.txt, хотя и не является юридически обязательным, иногда может привести к юридическим проблемам, особенно если скраппинг наносит ущерб или нарушает условия предоставления услуг.
-
Запрещенные и разрешенные пути
- Запрещенные пути: Они задаются с помощью директивы Disallow. Например,
Запретить: /private-data/
означает, что все краулеры должны избегать каталога /private-data/. - Разрешенные пути: Если определенные каталоги или страницы разрешены, их можно указать с помощью директивы Allow.
- Запрещенные пути: Они задаются с помощью директивы Disallow. Например,
-
Правила, специфичные для пользовательских агентов
В файле robots.txt можно указать правила для разных краулеров с помощью директивы User-agent.
Например:
Пользовательский агент: Googlebot
Запретить: /no-google/Это блокирует доступ Googlebot к /no-google/, но позволяет другим краулерам.
-
Нагрузка на сервер
Следуя рекомендациям robots.txt, скреперы снижают риск перегрузки сервера, что может произойти при слишком быстром выполнении большого количества запросов.
-
Не является механизмом безопасности
Файл robots.txt не является средством защиты. Это руководство, а не ограничение. Он полагается на то, что краулеры будут соблюдать установленные правила. Вредоносные скреперы или те, кто запрограммирован на игнорирование robots.txt, все равно могут получить доступ к запрещенным областям.
-
Соответствие требованиям и лучшие практики
- Соблюдайте robots.txt: Чтобы избежать потенциальных конфликтов и уважать операторов сайтов, скреперы должны придерживаться правил, определенных в robots.txt.
- Рассмотрите robots.txt Статус: Всегда проверяйте robots.txt перед тем, как скрапить сайт, чтобы убедиться в соответствии политике сайта.
Распространенные заблуждения о robots.txt
-
robots.txt является юридически обязательным
robots.txt - это не юридический договор, а протокол для управления доступом краулеров. Хотя он крайне важен для этичного скраппинга, он не обеспечивает юридического ограничения доступа.
-
robots.txt предотвращает все скрепы
robots.txt является руководством для ботов и краулеров, но не предотвращает все формы скраппинга. Ручной скраппинг или сложные инструменты все равно могут получить доступ к запрещенным областям.
-
robots.txt защищает конфиденциальные данные
robots.txt не является средством безопасности. Он предназначен для управления доступом гусениц, а не для защиты конфиденциальной информации.
Как соскрести страницы с сайта с помощью robots.txt
1. Подготовка к скрапбукингу
Настройка среды
Установите необходимые Python библиотеки:
импортировать запросы из bs4 import BeautifulSoup импортировать время
Выбор правильных инструментов
- Запросы: Для выполнения HTTP-запросов.
- BeautifulSoup: Для разбора HTML и XML.
- Scrapy: Комплексный фреймворк для веб-скреппинга.
- Селен: Для взаимодействия с динамически загружаемым контентом.
Оценка условий предоставления услуг на сайте
Ознакомьтесь с условиями предоставления услуг на сайте, чтобы убедиться, что ваши действия соответствуют его политике. Некоторые сайты прямо запрещают скраппинг.
2. Скрести с осторожностью
Получение и разбор файла robots.txt
Для начала проверьте файл robots.txt, чтобы понять, каковы правила наполнения сайта:
response = requests.get('https://example.com/robots.txt') robots_txt = response.text def parse_robots_txt(robots_txt): rules = {} user_agent = '*' for line in robots_txt.split('\n'): if line.startswith('User-agent'): user_agent = line.split(':')[1].strip() elif line.startswith('Disallow'): path = line.split(':')[1].strip() rules[user_agent] = rules.get(user_agent, []) + [path] return rules rules = parse_robots_txt(robots_txt)
Определение разрешенных и запрещенных путей
Определите, к каким путям вы можете получить легальный и этичный доступ, основываясь на директивах robots.txt:
allowed_paths = [path for path in rules.get('*', []) if not path.startswith('/')]
Обработка запрещенных путей с этической точки зрения
Если вам нужны данные с запрещенных путей или вы хотите скрапировать сайт, защищенный robots.txt, рассмотрите следующие варианты:
- Свяжитесь с владельцем сайта: Запросите разрешение на доступ к данным.
- Используйте альтернативные методы: Изучите API или открытые источники данных.
3. Альтернативные методы доступа к данным
API и их преимущества
Многие сайты предлагают API, которые обеспечивают структурированный доступ к их данным. Использование API часто более надежно и уважительно, чем скраппинг.
Открытые источники данных
Поищите общедоступные данные, которые могут удовлетворить ваши потребности. Правительственные сайты, исследовательские институты и платформы открытых данных - хорошие места для начала.
Соглашения о совместном использовании данных
Обратитесь к владельцу сайта, чтобы заключить соглашение о совместном использовании данных. Это может обеспечить доступ к данным при соблюдении политики сайта.
4. Продвинутые техники
Скраппинг динамически загружаемого содержимого
Используйте Selenium или аналогичные инструменты для сканирования содержимого, которое загружается динамически с помощью JavaScript:
из selenium import webdriver driver = webdriver.Chrome() driver.get('https://example.com') html = driver.page_source soup = BeautifulSoup(html, 'html.parser')
Использование безголовых браузеров
Безголовые браузеры, такие как Headless Chrome или PhantomJS, могут взаимодействовать с веб-страницами без отображения пользовательского интерфейса, что делает их полезными для сбора динамического контента.
Избегание ограничений по скорости обнаружения и обработки
Чередуйте пользовательские агенты, используйте прокси-серверы и делайте задержки между запросами, чтобы имитировать поведение человека и избежать блокировки.
OkeyProxy - это мощный прокси-провайдер, поддерживающий автоматическая ротация жилых IP-адресов с высоким качеством. Провайдеры предлагают более 150M+ IP-адресов по всему миру, и вы можете зарегистрироваться и получить 1 ГБ бесплатно!
Заключение
Следуя этому руководству, вы сможете разобраться в сложностях соскабливания страниц с сайтов с помощью robots.txt, соблюдая при этом этические и правовые нормы. Соблюдение robots.txt не только поможет вам избежать потенциальных юридических проблем, но и обеспечит сотрудничество с владельцами сайтов. Счастливого скраппинга!