reppy

Screenshot Software:
reppy
Szczegóły programowe:
Wersja: 0.1.0
Filmu: 11 May 15
Wywoływacz: Dan Lecocq
Licencja: Wolny
Popularność: 5

Rating: nan/5 (Total Votes: 0)

reppy rozpoczęła się z powodu braku wsparcia memoization w innych napotkanych parserach robots.txt, i brak wsparcia dla Crawl-delay i Sitemap na wbudowanym robotparser.
Dopasowanie
Pakiet ten obsługuje 1996 RFC, a także dodatkowe powszechnie realizowane funkcje, takie jak maska ​​oznaczająca, indeksowania i opóźnienia Sitemaps. Istnieją różne podejścia do dopasowania Pozwól przeszkadzają. Jednym ze sposobów jest użycie najdłuższy mecz. Innym jest wykorzystanie najbardziej szczegółowy. Pakiet ten zdecyduje się przestrzegać dyrektywy, który jest najdłuższy, przy założeniu, że jest to taki, który jest najbardziej szczegółowy - termin, który jest trochę trudne do określenia w tym kontekście.

Zastosowanie

Najprostszym sposobem korzystania reppy jest po prostu zapytać, czy adresy URL url lub jest / są dozwolone:
import reppy
# To pośrednio pobiera robot.txt example.com na
reppy.allowed ("http://example.com/howdy ')
# => True
# Teraz, to jest buforowane na podstawie, kiedy powinien upłynąć (czytaj więcej w `Expiration`)
reppy.allowed ("http://example.com/hello ')
# => True
# Obsługuje również zapytań wsadowych
reppy.allowed (['http://example.com/allowed1 "," http://example.com/allowed2 "," http://example.com/disallowed'])
# => ["Http://example.com/allowed1", "http://example.com/allowed2 ']
# okresowe zapytania są jeszcze obsługiwane po drugiej stronie kilka domen (choć nie są wykonywane pobierające równolegle)
reppy.allowed (['http://a.com/allowed "," http://b.com/allowed "," http://b.com/disallowed'])
# => ["Http://a.com/allowed", "http://b.com/allowed ']
Jest to dość proste w obsłudze. Domyślnym zachowaniem jest, aby pobrać go dla Ciebie z urllib2
import reppy
# Zrób reppy obiekt związany z określonej domeny
r = reppy.fetch ("http://example.com/robots.txt ')
ale można równie łatwo analizować ciąg, że ściągnięcie.
import urllib2
Dane = urllib2.urlopen ("http://example.com/robots.txt") .read ()
r = reppy.parse (dane)
Wygaśnięcie
Główną zaletą posiadania reppy pobrać pliku robots.txt dla Ciebie jest to, że po jej automatycznie REFETCH danych wygasł. Jest całkowicie przezroczysty dla ciebie, więc nie ma nawet o tym myśleć - po prostu używając go jako normalne. Albo, jeśli wolisz, możesz ustawić własny czas wprowadzania na żywo, która ma pierwszeństwo:
import reppy
r = reppy.fetch ("http://example.com/robots.txt ')
r.ttl
# => 10800 (Jak długo żyć?)
r.expired ()
# => False (Czy to wygasło?)
r.remaining ()
# => 10798 (Jak długo, dopóki nie wygaśnie)
r = reppy.fetch ("http://example.com/robots.txt 'ttl = 1)
# Poczekaj 2 sekundy
r.expired ()
# => True
Zapytania
Reppy próbuje śledzić przyjmującego, dzięki czemu nie trzeba. Odbywa się to automatycznie po użyciu pobrać, lub opcjonalnie można podać adres URL, ściągnięcie go z z parse. Takie postępowanie pozwala na dostarczenie tylko ścieżkę, kiedy zapytań. W przeciwnym razie musisz podać cały adres:
# To jest wykonalne
r = reppy.fetch ("http://example.com/robots.txt ')
r.allowed ("/")
r.allowed (['/ hello', '/ witaj'])
# A więc jest to
Dane = urllib2.urlopen ("http://example.com/robots.txt") .read ()
r = reppy.parse (dane, url = "http: //example.com/robots.txt")
r.allowed (['/', '/ hello', '/ witaj'])
# Jednak nie wiedzą niejawnie, które są z domeny
reppy.allowed (['/', '/ hello', '/ witaj'])
Crawl-Delay i Sitemaps
Reppy naraża również non-RFC, ale powszechnie stosowany Crawl-Delay i Sitemaps atrybutów. Opóźnienie indeksowania jest rozpatrywane indywidualnie dla każdego agenta każdego użytkownika, ale Sitemaps są uważane globalny. Jeśli nie podano, opóźnienie indeksowania jest Brak i Sitemaps jest pusta lista. Na przykład, jeśli jest to mój robots.txt:
User-agent: *
Crawl-delay: 1
Mapa strony: http://example.com/sitemap.xml
Mapa strony: http://example.com/sitemap2.xml
Następnie są one dostępne:
z pliku ("myrobots.txt ',' r '), jako f:
& Nbsp; r = reppy.parse (f.read ())
r.sitemaps
# => ["Http://example.com/sitemap.xml", "http://example.com/sitemap2.xml ']
r.crawlDelay
# => 1
User-Agent Matching
Możesz podać środek obsługi swojego wyboru do pobierania pliku robots.txt, a następnie ciąg agenta użytkownika dopasowujemy do tego, co jest domyślnie pojawia się przed pierwszym /. Na przykład, jeśli podasz agenta użytkownika jako 'MyCrawler / 1.0', wtedy będziemy używać "MyCrawler" jako ciąg do meczu z User-agent. Porównania są wielkości liter, a my nie obsługuje symboli wieloznacznych w User-Agent. Jeśli to domyślne nie pasuje, możesz stanowić alternatywę:
# To będzie mecz przeciwko "myuseragent" domyślnie
r = reppy.fetch ("http://example.com/robots.txt", userAgent = "MyUserAgent / 1.0")
# To będzie mecz przeciwko "someotheragent" zamiast
r = reppy.fetch ("http://example.com/robots.txt", userAgent = "MyUserAgent / 1.0", userAgentString "someotheragent" =)
Ścieżka-Matching
Dopasowanie ścieżki obsługuje zarówno * i $

Opis :

  • z pobranego pliku robots.txt memoization
  • Wygaśnięcie wzięte z wygasa nagłówka
  • Zapytania partii
  • Możliwość konfiguracji agenta użytkownika do pobierania pliku robots.txt,
  • Automatyczne refetching oparciu o wygaśnięciu
  • Obsługa Crawl opóźnienia
  • Wsparcie dla witryn
  • Wildcard dopasowanie

Wymagania :

  • Python

Inne programy z deweloperem Dan Lecocq

asis
asis

20 Feb 15

aws-trade-in
aws-trade-in

20 Feb 15

Komentarze do reppy

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!