Сетевой этикет

Я рассматриваю возможность написания простого веб-приложения для извлечения информации с веб-сайта, который, по-видимому, специально не запрещает это.

Я проверил другие альтернативы (например, RSS, веб-сервис), чтобы получить эту информацию, но на данном этапе их нет.

Несмотря на это, я также сам разработал / поддержал несколько веб-сайтов, и поэтому я понимаю, что если очистка веб-страниц выполняется наивно / жадно, это может замедлить работу других пользователей и, как правило, стать неприятностью.

Итак, какой этикет задействован в терминах:

  1. Количество запросов в секунду / минуту / час.
  2. Содержимое HTTP User Agent.
  3. Содержание HTTP Referer.
  4. Настройки HTTP Cache.
  5. Размер буфера для больших файлов / ресурсов.
  6. Законность и вопросы лицензирования.
  7. Хорошие инструменты или подходы к дизайну для использования.
  8. Robots.txt, это актуально для веб-скребков или только для сканеров / пауков?
  9. Сжатие типа GZip в запросах.

Обновить

Нашел этот актуальный вопрос по мета- этикету Screen Scaping Stackru. Ответ Джеффа Этвуда содержит несколько полезных рекомендаций.

Другие связанные вопросы Stackru:

Варианты очистки HTML

9 ответов

Соответствуйте запросу сайта robot.txt, это, вероятно, один из лучших и наиболее этичных способов прийти к соглашению, не разговаривая ни с кем на сайте.

Идентифицируйте себя соответствующим образом в заголовке UserAgent. Таким образом, сайт может видеть, кто вы, и явно ограничивать / разрешать определенные области своего сайта. Например, посмотрите на пользовательских агентов большого парня, Google перечислен ниже, и разработайте аналогичный, который имеет страницу, описывающую, кто вы есть и как сообщить о том, что ваши боты сканируют.

Строка агента пользователя Google: Googlebot / 1.0 (googlebot@googlebot.com http://googlebot.com/)

Используйте сжатие gzip/deflate, если сайт поддерживает, это экономит ваше время и пропускную способность сайта.

С юридической точки зрения у вас должно быть все в порядке (хотя я не адвокат и не юрист), если вы следуете их robots.txt И условиям обслуживания.

В конце концов, однако, я думаю, что лучший совет был от runrunraygun, учитывая его одинокий сайт. Обращение к администратору и выяснение того, что будет приемлемо, и соблюдение их пожеланий помогут вам далеко.

robots.txt актуально: посмотрите на него, чтобы понять, как сайт относится к читателям, не являющимся людьми. Когда вы отправите им электронное сообщение о том, что некоторые пользователи знают о его содержании, вы получите определенную уверенность в том, что вы позаботитесь об уважении к сайту, когда будете его чистить.

Я хотел бы предложить по электронной почте веб-мастеру, сказать им, что вы пишете не злонамеренный сценарий и т. Д., И спросить, что они счастливы от вашего удара и как часто.

мы запускаем сканер доменов, который забирает документы в формате pdf / word и т. д. из дружественных доменов, и самое большее, о чем мы просили, - это 5-секундный разрыв между запросами и работа только ночью.

Это действительно зависит от того, что вы очищаете, и сколько вы очищаете. Например, около недели назад мне пришлось написать скребок, чтобы пролистать несколько сотен страниц. Чтобы быть щедрым, я поместил одну секунду ожидания после каждой страницы. Потребовалось несколько минут, чтобы вернуть данные, но я уверен, что владелец сайта был бы признателен за любую слабину, которую я могу оставить в процессе.

Для всех, кто интересуется поиском в Интернете, я настоятельно рекомендую прочитать эту книгу (в ней также обсуждается этикет), поэтому я чувствую, что она важна для данной статьи):

https://github.com/1040003585/WebScrapingWithPython/blob/master/Packt-Web.Scraping.with.Python.Richard%20Lawson.pdf

Исходя из моего опыта в очистке, если вы постоянно делаете запросы, вы потенциально можете внести свой ip в черный список. Если это так, вы можете посмотреть на вращающийся прокси, как штормовые прокси. Сайт действительно не сможет отличить, если вы просматриваете / сканируете, поэтому robots.txt - это всегда хорошая идея.

Насколько законность, от того, что я прочитал, немного серой области. Обычно, если вы просматриваете в качестве гостя (а не вошедшего в систему пользователя), вы не будете придерживаться каких-либо положений и условий, которые могут иметь словесное отношение к автоматическим запросам.

Пока у вас есть значительная задержка между вашими запросами, следуйте robots.txt и предпринимайте шаги, чтобы предотвратить попадание вашего ip в черный список, ваш скребок должен выжить.

Я также хотел бы добавить, что даже в Python есть глобальная блокировка интерпретатора, например, GIL. Если вы запрашиваете данные, скорость очень важна с помощью import multithreading Модуль может быть весьма полезным, так как запрос занимает много времени для завершения. В то же время, если вы запрашиваете много данных (делаете большую сумму запросов), вас могут забанить и ваше соединение может быть заблокировано. Нет способа определить порог, если вы не пройдете тестирование.

Одно добавление, которое я обнаружил, может сильно повлиять на количество запросов: посмотрите на структуру сайта. Если сайт динамический, вероятно, есть несколько мест, где могут быть найдены нужные данные. Иногда на одной странице. На страницах категорий и архивов WP часто есть (до) все содержимое статей в одном месте. Может быть, это крайние случаи, но я заканчиваю тем, что регулярно проверяю данные и обнаружил, что значительный процент времени обходится вокруг.

TLDR; иногда возни немного могут спасти сотни запросов.

Кроме того, у меня были вебмастера, которые просто присылали мне информацию, которую я хочу почистить Это предполагает, что вы связались и работаете для достижения примерно тех же целей (что и не конкуренты).

  1. Задержка ~5 секунд на домен. Вы можете настроить задержку в зависимости от того, как быстро сайт возвращает контент.
  2. Пользовательский агент настроен на общий браузер, поэтому веб-сайт отображается как обычно
  3. реферер указывает, с какой страницы была связана ссылка
  4. как долго я кеширую, зависит от сайта. Обычно 1 месяц.
  5. Я загружаю только текстовые и графические файлы
  6. "Проще просить прощения, чем получать разрешение"
  7. Я использую существующие библиотеки Python, такие как lxml, и некоторые, которые я разработал сам
  8. в очистке веб-страниц участвуют сканеры / пауки, так что да, robots.txt имеет значение
  9. всегда сжимать

Я много зачищаю веб-сайты и обнаружил, что большинство веб-сайтов вообще не отслеживают IP-адреса на предмет подозрительного поведения.

Если вас это беспокоит, вместо загрузки контента непосредственно с целевого веб-сайта вы можете использовать Google Cache, Archive.org и т. Д. Или использовать прокси.

Всегда лучше воспользоваться специализированной веб-службой, если вы собираете данные для своего бизнеса. Поскольку очистка веб-страниц представляет собой технологически сложный процесс, выполнение его внутри компании может легко истощить ваши ресурсы и замедлить рост компании.

Другие вопросы по тегам