reppy

Software screenshot:
reppy
Software detaljer:
Version: 0.1.0
Upload dato: 11 May 15
Udvikler: Dan Lecocq
Licens: Gratis
Popularitet: 50

Rating: 4.0/5 (Total Votes: 1)

reppy startede af manglende memoization støtte i andre robots.txt parsere stødt, og den manglende støtte til Crawl-forsinkelse og Sitemap i den indbyggede robotparser.
matchende
Denne pakke understøtter 1996 RFC, samt yderligere almindeligt gennemførte funktioner, som wildcard matching, crawl-forsinkelse og sitemaps. Der er forskellige fremgangsmåder for at matche Tillad og Disallow. En metode er at bruge den længste kamp. En anden er at bruge den mest specifikke. Denne pakke vælger at følge direktivet, der er længst, den antagelse er, at det er den, der er mest specifikke - et begreb, der er lidt svært at definere i denne sammenhæng.

Anvendelse

Den nemmeste måde at bruge reppy er at bare spørge, om en url eller webadresser er / er tilladt:
import reppy
# Dette henter implicit example.com er robot.txt
reppy.allowed (http://example.com/howdy)
# => Sand
# Nu er det cached baseret på, hvornår det skal udløbe (læs mere i `Expiration`)
reppy.allowed (http://example.com/hello)
# => Sand
# Det understøtter også batch forespørgsler
reppy.allowed (['http://example.com/allowed1', 'http://example.com/allowed2', 'http://example.com/disallowed'])
# => ['Http://example.com/allowed1', 'http://example.com/allowed2']
# Batch forespørgsler er endda understøttet tværs flere domæner (selvom hentninger ikke er færdig i parallel)
reppy.allowed (['http://a.com/allowed', 'http://b.com/allowed', 'http://b.com/disallowed'])
# => ['Http://a.com/allowed', 'http://b.com/allowed']
Det er ret nemt at bruge. Den standard opførsel er at hente det for dig med urllib2
import reppy
# Lav en reppy objekt tilknyttet et bestemt domæne
r = reppy.fetch ('http://example.com/robots.txt)
men du kan lige så let parse en streng, som du hentede.
import urllib2
data = urllib2.urlopen ('http://example.com/robots.txt) .Læs ()
r = reppy.parse (data)
udløb
Den største fordel ved at have reppy hente robots.txt for dig er, at den automatisk kan refetch efter data er udløbet. Det er fuldstændig gennemsigtig for dig, så du ikke behøver engang at tænke over det - bare fortsætte med at bruge det som normalt. Eller hvis du foretrækker, kan du indstille din egen tid-til-live, der har forrang:
import reppy
r = reppy.fetch ('http://example.com/robots.txt)
r.ttl
# => 10800 (Hvor lang tid at leve?)
r.expired ()
# => Falsk (Har den udløb?)
r.remaining ()
# => 10.798 (Hvor lang tid, indtil den udløber)
r = reppy.fetch ('http://example.com/robots.txt', ttl = 1)
# Vent to sekunder
r.expired ()
# => Sand
Forespørgsler
Reppy forsøger at holde styr på værten, så du ikke behøver at. Dette gøres automatisk, når du bruger hente, eller du kan eventuelt give url, du hentede det fra med parse. Hvis du gør det giver dig mulighed for at give netop den sti, når forespørge. Ellers skal du give hele url:
# Dette er doable
r = reppy.fetch ('http://example.com/robots.txt)
r.allowed ('/')
r.allowed (['/ hello', '/ howdy'])
# Og så er det
data = urllib2.urlopen ('http://example.com/robots.txt) .Læs ()
r = reppy.parse (data, url = 'http: //example.com/robots.txt')
r.allowed (['/', '/ hello', '/ howdy'])
# Men vi ved ikke implicit vide hvilket domæne disse er fra
reppy.allowed (['/', '/ hello', '/ howdy'])
Crawl-Delay og Sitemaps
Reppy også udsætter de ikke-RFC, men udbredte Crawl-Delay og Sitemaps attributter. Gennemgangen forsinkelse betragtes på et grundlag per-user agent, men de sitemaps betragtes global. Hvis de ikke er angivet, crawl forsinkelsen er Ingen, og sitemaps er en tom liste. For eksempel, hvis dette er min robots.txt:
User-agent: *
Crawl-forsinkelse: 1
Sitemap: http://example.com/sitemap.xml
Sitemap: http://example.com/sitemap2.xml
Så disse er tilgængelige:
med file ('myrobots.txt «,» r «) som f:
& Nbsp; r = reppy.parse (f.read ())
r.sitemaps
# => ['Http://example.com/sitemap.xml', 'http://example.com/sitemap2.xml']
r.crawlDelay
# => 1
User-Agent matchende
Du kan give en bruger agent, som du vælger til at hente robots.txt, og derefter strengen brugeragent matcher vi er misligholdt til hvad der vises, før den første /. For eksempel, hvis du giver brugeren agent som "MyCrawler / 1,0", så vi vil bruge "MyCrawler" som strengen til at matche mod User-agent. Sammenligninger er store og små bogstaver, og vi støtter ikke jokertegn i User-Agent. Hvis denne standard ikke passer dig, kan du give et alternativ:
# Dette vil matche mod 'myuseragent' som standard
r = reppy.fetch ('http://example.com/robots.txt', UserAgent = 'MyUserAgent / 1,0 ")
# Dette vil matche mod 'someotheragent' i stedet
r = reppy.fetch ('http://example.com/robots.txt', UserAgent = 'MyUserAgent / 1.0', userAgentString = 'someotheragent')
Sti-Matching
Sti matching understøtter både * og $

Funktioner :

  • Memoization af hentede robots.txt
  • Udløb taget fra Udløber header
  • Batch forespørgsler
  • Konfigurerbar bruger agent til at hente robots.txt
  • Automatisk refetching basere på udløb
  • Understøttelse af Crawl-forsinkelse
  • Understøttelse af Sitemaps
  • Wildcard matching

Krav :

  • Python

Andre software developer Dan Lecocq

asis
asis

20 Feb 15

aws-trade-in
aws-trade-in

20 Feb 15

Kommentarer til reppy

Kommentarer ikke fundet
Tilføj kommentar
Tænd billeder!