Сетевой этикет
Я рассматриваю возможность написания простого веб-приложения для извлечения информации с веб-сайта, который, по-видимому, специально не запрещает это.
Я проверил другие альтернативы (например, RSS, веб-сервис), чтобы получить эту информацию, но на данном этапе их нет.
Несмотря на это, я также сам разработал / поддержал несколько веб-сайтов, и поэтому я понимаю, что если очистка веб-страниц выполняется наивно / жадно, это может замедлить работу других пользователей и, как правило, стать неприятностью.
Итак, какой этикет задействован в терминах:
- Количество запросов в секунду / минуту / час.
- Содержимое HTTP User Agent.
- Содержание HTTP Referer.
- Настройки HTTP Cache.
- Размер буфера для больших файлов / ресурсов.
- Законность и вопросы лицензирования.
- Хорошие инструменты или подходы к дизайну для использования.
- Robots.txt, это актуально для веб-скребков или только для сканеров / пауков?
- Сжатие типа GZip в запросах.
Обновить
Нашел этот актуальный вопрос по мета- этикету Screen Scaping Stackru. Ответ Джеффа Этвуда содержит несколько полезных рекомендаций.
Другие связанные вопросы Stackru:
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-секундный разрыв между запросами и работа только ночью.
Это действительно зависит от того, что вы очищаете, и сколько вы очищаете. Например, около недели назад мне пришлось написать скребок, чтобы пролистать несколько сотен страниц. Чтобы быть щедрым, я поместил одну секунду ожидания после каждой страницы. Потребовалось несколько минут, чтобы вернуть данные, но я уверен, что владелец сайта был бы признателен за любую слабину, которую я могу оставить в процессе.
Для всех, кто интересуется поиском в Интернете, я настоятельно рекомендую прочитать эту книгу (в ней также обсуждается этикет), поэтому я чувствую, что она важна для данной статьи):
Исходя из моего опыта в очистке, если вы постоянно делаете запросы, вы потенциально можете внести свой ip в черный список. Если это так, вы можете посмотреть на вращающийся прокси, как штормовые прокси. Сайт действительно не сможет отличить, если вы просматриваете / сканируете, поэтому robots.txt - это всегда хорошая идея.
Насколько законность, от того, что я прочитал, немного серой области. Обычно, если вы просматриваете в качестве гостя (а не вошедшего в систему пользователя), вы не будете придерживаться каких-либо положений и условий, которые могут иметь словесное отношение к автоматическим запросам.
Пока у вас есть значительная задержка между вашими запросами, следуйте robots.txt и предпринимайте шаги, чтобы предотвратить попадание вашего ip в черный список, ваш скребок должен выжить.
Я также хотел бы добавить, что даже в Python есть глобальная блокировка интерпретатора, например, GIL. Если вы запрашиваете данные, скорость очень важна с помощью import multithreading
Модуль может быть весьма полезным, так как запрос занимает много времени для завершения. В то же время, если вы запрашиваете много данных (делаете большую сумму запросов), вас могут забанить и ваше соединение может быть заблокировано. Нет способа определить порог, если вы не пройдете тестирование.
Одно добавление, которое я обнаружил, может сильно повлиять на количество запросов: посмотрите на структуру сайта. Если сайт динамический, вероятно, есть несколько мест, где могут быть найдены нужные данные. Иногда на одной странице. На страницах категорий и архивов WP часто есть (до) все содержимое статей в одном месте. Может быть, это крайние случаи, но я заканчиваю тем, что регулярно проверяю данные и обнаружил, что значительный процент времени обходится вокруг.
TLDR; иногда возни немного могут спасти сотни запросов.
Кроме того, у меня были вебмастера, которые просто присылали мне информацию, которую я хочу почистить Это предполагает, что вы связались и работаете для достижения примерно тех же целей (что и не конкуренты).
- Задержка ~5 секунд на домен. Вы можете настроить задержку в зависимости от того, как быстро сайт возвращает контент.
- Пользовательский агент настроен на общий браузер, поэтому веб-сайт отображается как обычно
- реферер указывает, с какой страницы была связана ссылка
- как долго я кеширую, зависит от сайта. Обычно 1 месяц.
- Я загружаю только текстовые и графические файлы
- "Проще просить прощения, чем получать разрешение"
- Я использую существующие библиотеки Python, такие как lxml, и некоторые, которые я разработал сам
- в очистке веб-страниц участвуют сканеры / пауки, так что да, robots.txt имеет значение
- всегда сжимать
Я много зачищаю веб-сайты и обнаружил, что большинство веб-сайтов вообще не отслеживают IP-адреса на предмет подозрительного поведения.
Если вас это беспокоит, вместо загрузки контента непосредственно с целевого веб-сайта вы можете использовать Google Cache, Archive.org и т. Д. Или использовать прокси.
Всегда лучше воспользоваться специализированной веб-службой, если вы собираете данные для своего бизнеса. Поскольку очистка веб-страниц представляет собой технологически сложный процесс, выполнение его внутри компании может легко истощить ваши ресурсы и замедлить рост компании.