reppy

Скриншот программы:
reppy
Детали программы:
Версия: 0.1.0
Дата загрузки: 11 May 15
Разработчик: Dan Lecocq
Тип распространения: Бесплатная
Популярность: 5

Rating: nan/5 (Total Votes: 0)

reppy начал из-за отсутствия поддержки мемоизации в других robots.txt анализаторов, с которыми сталкиваются, и отсутствие поддержки Crawl задержки и сайта в построенном в robotparser.
Соответствие
Этот пакет поддерживает 1996 RFC, а также дополнительные, обычно реализуемые функции, такие как групповой символ, обхода задержки, и карты сайта. Есть различные подходы к соответствию Разрешить и запретить. Один из подходов состоит в использовании совпадение наибольшей длины. Другим способом является использование наиболее специфичны. Этот пакет выбирает следовать директива, которая длинная, предположение том, что он тот, который наиболее специфические - это термин, который немного трудно определить в этом контексте.

Использование

Самый простой способ использовать reppy это просто спросить, если ссылка или URL-адреса в / допускается:
импорт reppy
# Это косвенно получает robot.txt example.com в
reppy.allowed ('http://example.com/howdy')
# => True
# Теперь, это кэшировать, когда он должен истекать (подробнее в `Expiration`)
reppy.allowed ('http://example.com/hello')
# => True
# Он также поддерживает пакетные запросы
reppy.allowed (['http://example.com/allowed1', 'http://example.com/allowed2', 'http://example.com/disallowed'])
# => ['Http://example.com/allowed1', 'http://example.com/allowed2']
# Пакетные запросы даже поддерживали accross нескольких доменов (хотя разгонов не сделано параллельно)
reppy.allowed (['http://a.com/allowed', 'http://b.com/allowed', 'http://b.com/disallowed'])
# => ['Http://a.com/allowed', 'http://b.com/allowed']
Это довольно простой в использовании. Поведение по умолчанию является извлечение его для вас urllib2
импорт reppy
# Сделайте reppy объект, связанный с конкретной области
г = reppy.fetch ('http://example.com/robots.txt')
но вы можете так же легко разобрать строку, что вы скачали.
импорт urllib2
Данные = urllib2.urlopen ('http://example.com/robots.txt') .read ()
г = reppy.parse (данные)
Действительно
Основным преимуществом наличия reppy принести robots.txt для Вас является то, что она может автоматически refetch после его данные истек. Это полностью прозрачно для вас, так что вы даже не должны думать об этом - просто держать его использования, как обычно. Или, если вы предпочитаете, вы можете настроить свой собственный времени к проживанию, который имеет приоритет:
импорт reppy
г = reppy.fetch ('http://example.com/robots.txt')
r.ttl
# => 10800 (Как долго жить?)
r.expired ()
# => False (Была ли она истек?)
r.remaining ()
# => 10798 (Как долго, пока не истечет)
г = reppy.fetch ('http://example.com/robots.txt ", TTL = 1)
# Подождите 2 секунды
r.expired ()
# => True
Запросы
Reppy пытается отслеживать хозяина, так что вы не должны. Это делается автоматически, когда вы используете выборки, или вы можете опционально предоставить URL вы скачали его из разбора с. Это позволяет обеспечить только путь при запросе. В противном случае, вы должны предоставить всю URL:
# Это выполнимо
г = reppy.fetch ('http://example.com/robots.txt')
r.allowed ('/')
r.allowed (['/ привет', '/ привет'])
# И так это
Данные = urllib2.urlopen ('http://example.com/robots.txt') .read ()
г = reppy.parse (данные, гиперссылка = 'HTTP: //example.com/robots.txt')
r.allowed (['/', '/ привет', '/ привет'])
# Однако, мы не знаем, неявно домен, который из них
reppy.allowed (['/', '/ привет', '/ привет'])
Сканирование с задержкой и Карты сайта
Reppy также подвергает не-RFC, но широко используется обхода с задержкой и Карты сайта атрибутов. Задержка обхода рассматривается на агента для каждого пользователя, но карты сайта считаются глобальными. Если они не указаны, задержка сканирования не None, и карты сайта является пустой список. Например, если это мой robots.txt:
User-Agent: *
Сканирование задержки: 1
Карта сайта: http://example.com/sitemap.xml
Карта сайта: http://example.com/sitemap2.xml
Затем эти доступны:
с файлом ("myrobots.txt ',' г ') как F:
& NBSP; г = reppy.parse (f.read ())
r.sitemaps
# => ['Http://example.com/sitemap.xml', 'http://example.com/sitemap2.xml']
r.crawlDelay
# => 1
User-Agent Matching
Вы можете предоставить пользовательский агент по вашему выбору для извлечения файла robots.txt, а затем строку агента пользователя, мы матча дефолт на то, что перед первой /. Например, если вы предоставите агенту пользователя как 'MyCrawler / 1.0', то мы будем использовать '' MyCrawler как строки в соответствии с User-Agent. Сравнения без учета регистра, и мы не поддерживаем маски в User-Agent. Если это по умолчанию вас не устраивает, вы можете предоставить альтернативу:
# Это будет матч против "myuseragent" по умолчанию
г = reppy.fetch ('http://example.com/robots.txt ", UserAgent =' MyUserAgent / 1.0 ')
# Это будет матч против "someotheragent 'вместо
г = reppy.fetch ('http://example.com/robots.txt ", UserAgent =' MyUserAgent / 1.0 ',' userAgentString someotheragent '=)
Путь-соответствия
Соответствие Путь поддерживает * и $

Особенности

  • мемоизации от приведенных robots.txt
  • Действительно взяты из Истекает заголовок
  • Пакетные запросы
  • Настраиваемые пользователем средство для извлечения файла robots.txt
  • Автоматическое refetching обоснование по истечении
  • Поддержка Crawl задержки
  • Поддержка файлов Sitemap
  • Джокер соответствия

Требования

  • Python

Другие программы разработчика Dan Lecocq

asis
asis

20 Feb 15

aws-trade-in
aws-trade-in

20 Feb 15

Комментарии к reppy

Комментарии не найдены
добавить комментарий
Включите картинки!