reppy

Software screenshot:
reppy
Software informatie:
Versie: 0.1.0
Upload datum: 11 May 15
Ontwikkelaar: Dan Lecocq
Licentie: Gratis
Populariteit: 5

Rating: nan/5 (Total Votes: 0)

reppy begonnen uit een gebrek aan memoization steun in andere robots.txt parsers ontmoet, en het gebrek aan steun voor Crawl-delay en Sitemap in de ingebouwde robotparser.
Passende
Dit pakket ondersteunt de RFC 1996, evenals extra vaak geïmplementeerde functies, zoals wildcard matching, crawl-delay en sitemaps. Er zijn verschillende benaderingen van bijpassende Toestaan ​​en niet toestaan. Een benadering is de langste overeenkomst gebruiken. Een andere is de meest specifieke gebruik. Dit pakket kiest voor de richtlijn die het langst, de veronderstelling is dat het is degene die het meest specifiek te volgen - een term die is een beetje moeilijk te definiëren in deze context.

Gebruik

De eenvoudigste manier om reppy gebruiken is om gewoon vragen of een url of urls is / zijn toegestaan:
import reppy
# Dit haalt impliciet robot.txt example.com's
reppy.allowed (http://example.com/howdy)
# => True
# Nu, het is in de cache op basis van wanneer het zou moeten verlopen (lees meer in `Expiration`)
reppy.allowed (http://example.com/hello)
# => True
# Het ondersteunt ook batch queries
reppy.allowed (['http://example.com/allowed1', 'http://example.com/allowed2', 'http://example.com/disallowed'])
# => ['Http://example.com/allowed1', 'http://example.com/allowed2']
# Batch queries worden ook ondersteund overkant verschillende domeinen (hoewel Haalt niet worden gedaan in parallel)
reppy.allowed (['http://a.com/allowed', 'http://b.com/allowed', 'http://b.com/disallowed'])
# => ['Http://a.com/allowed', 'http://b.com/allowed']
Het is vrij eenvoudig te gebruiken. Het standaard gedrag is om het te halen voor u met urllib2
import reppy
# Maak een reppy object gekoppeld aan een bepaald domein
r = reppy.fetch (http://example.com/robots.txt)
maar je kunt net zo makkelijk ontleden een string die je gehaald.
import urllib2
data = urllib2.urlopen ('http://example.com/robots.txt ") .Lees ()
r = reppy.parse (data)
Vervaldatum
Het belangrijkste voordeel van het hebben van reppy halen de robots.txt voor u is dat het automatisch kan opnieuw ophalen na de data is verstreken. Het is volledig transparant voor u, zodat u hoeft niet eens over na te denken - gewoon blijven gebruiken als normaal. Of, als u liever, kunt u uw eigen time-to-Live, die voorrang heeft ingesteld:
import reppy
r = reppy.fetch (http://example.com/robots.txt)
r.ttl
# => 10800 (Hoe lang meer te leven?)
r.expired ()
# => False (Is het verlopen?)
r.remaining ()
# => 10.798 (Hoe lang duurt het voordat het verloopt)
r = reppy.fetch ('http://example.com/robots.txt', ttl = 1)
# Wacht 2 seconden
r.expired ()
# => True
Queries
Reppy probeert te houden van de gastheer, zodat u niet hoeft te doen. Dit gebeurt automatisch wanneer u halen, of u kunt optioneel te voorzien van de url u gehaald uit met ontleden. Dit doet, kunt u gewoon het pad bieden bij het opvragen. Anders moet je de hele url te bieden:
# Dit is goed te doen
r = reppy.fetch (http://example.com/robots.txt)
r.allowed ("/")
r.allowed (['/ hallo', '/ Howdy'])
# En dus is dit
data = urllib2.urlopen ('http://example.com/robots.txt ") .Lees ()
r = reppy.parse (data, url = 'http: //example.com/robots.txt')
r.allowed (['/', '/ hallo', '/ Howdy'])
# Maar we niet impliciet weten welk domein deze zijn uit
reppy.allowed (['/', '/ hallo', '/ Howdy'])
Crawl-Delay en Sitemaps
Reppy blootstelt ook de niet-RFC, maar veel gebruikte Crawl-Delay en Sitemaps attributen. De crawl vertraging wordt beschouwd als een middel basis per-gebruiker, maar de sitemaps zijn wereldwijde beschouwd. Als ze niet worden gespecificeerd, de crawl vertraging Geen en sitemaps is een lege lijst. Bijvoorbeeld, als het mijn robots.txt:
User-agent: *
Crawl-delay: 1
Sitemap: http://example.com/sitemap.xml
Sitemap: http://example.com/sitemap2.xml
Dan zijn deze toegankelijk zijn:
met file ('myrobots.txt', 'r') als f:
& Nbsp; r = reppy.parse (f.read ())
r.sitemaps
# => ['Http://example.com/sitemap.xml', 'http://example.com/sitemap2.xml']
r.crawlDelay
# => 1
User-Agent Passende
U kunt een user agent van uw keuze te bieden voor het ophalen robots.txt, en vervolgens de gebruiker agent string we overeenkomen is standaard ingesteld op wat voor de eerste / verschijnt. Bijvoorbeeld, als u de user agent als 'MyCrawler / 1.0', dan zullen we 'MyCrawler' gebruiken als de string aan te passen tegen de User-agent. Vergelijkingen zijn niet hoofdlettergevoelig, en wij niet steunen wildcards in User-Agent. Als deze standaard niet bij je passen, kunt u een alternatief te bieden:
# Dit zal wedstrijd tegen 'myuseragent' standaard
r = reppy.fetch ('http://example.com/robots.txt, userAgent =' MyUserAgent / 1,0)
# Dit zal plaats wedstrijd tegen 'someotheragent'
r = reppy.fetch ('http://example.com/robots.txt, userAgent =' MyUserAgent / 1,0 ", userAgentString = 'someotheragent)
Pad-Matching
Path matching ondersteunt zowel * en $

Eigenschappen

  • memoization van vergezochte robots.txt
  • Vervaldatum genomen van de Expires header
  • Batch queries
  • Configureerbare user agent voor het ophalen van robots.txt
  • Automatische Voorblad opnieuw ophalen baseren op expiratie
  • Ondersteuning voor Crawl-delay
  • Ondersteuning voor Sitemaps
  • Wildcard matching

Eisen

  • Python

Andere software van ontwikkelaar Dan Lecocq

asis
asis

20 Feb 15

aws-trade-in
aws-trade-in

20 Feb 15

Reacties op reppy

Reacties niet gevonden
Commentaar toe te voegen
Zet op de beelden!