reppy

Skjermbilde programvare:
reppy
Prog.varedetaljer:
Versjon: 0.1.0
Last opp dato: 11 May 15
Utvikler: Dan Lecocq
Lisens: Gratis
Popularitet: 5

Rating: nan/5 (Total Votes: 0)

reppy startet av mangel på memoization støtte i andre robots.txt parsere oppstått, og mangelen på støtte for Crawl-forsinkelse og kart i den innebygde robotparser.
matchende
Denne pakken støtter 1996 RFC, samt ytterligere vanligste implementert funksjoner, som jokertegn, crawl-forsinkelse, og områdekart. Det finnes ulike tilnærminger til matchende Tillat og Forby. En tilnærming er å bruke den lengste kampen. En annen er å bruke mest mulig konkret. Denne pakken velger å følge direktivet som er lengst, forutsetningen er at det er den som er mest spesifikke - et begrep som er litt vanskelig å definere i denne sammenheng.

Bruk

Den enkleste måten å bruke reppy er å bare spørre om en url eller nettadresser er / har lov til:
import reppy
# Denne implisitt henter example.com er robot.txt
reppy.allowed ('http://example.com/howdy')
# => Sann
# Nå er det bufret basert på når den skal utløpe (les mer i `Expiration`)
reppy.allowed ('http://example.com/hello')
# => Sann
# Det støtter også batch spørringer
reppy.allowed (['http://example.com/allowed1', 'http://example.com/allowed2', 'http://example.com/disallowed'])
# => ['Http://example.com/allowed1', 'http://example.com/allowed2']
# Batch spørringer er selv støttet tvers flere domener (selv hentinger ikke er gjort i parallell)
reppy.allowed (['http://a.com/allowed', 'http://b.com/allowed', 'http://b.com/disallowed'])
# => ['Http://a.com/allowed', 'http://b.com/allowed']
Det er ganske lett å bruke. Standard oppførsel er å hente det for deg med urllib2
import reppy
# Lag reppy gjenstand assosiert med et bestemt domene
r = reppy.fetch ('http://example.com/robots.txt')
men du kan like gjerne analysere en streng som du hentet.
import urllib2
data = urllib2.urlopen ('http://example.com/robots.txt') .read ()
r = reppy.parse (data)
Utløps
Den største fordelen med å ha reppy hente robots.txt for deg er at den kan automatisk refetch etter sin data har utløpt. Det er helt gjennomsiktig til deg, så du trenger ikke engang å tenke på det - bare fortsette å bruke den som normalt. Eller, hvis du foretrekker, kan du sette din egen tid-to-live, som har forrang:
import reppy
r = reppy.fetch ('http://example.com/robots.txt')
r.ttl
# => 10800 (Hvor lenge igjen å leve?)
r.expired ()
# => False (Har det gått ut?)
r.remaining ()
# => 10798 (Hvor lenge før den utløper)
r = reppy.fetch ('http://example.com/robots.txt', TTL = 1)
# Vent to sekunder
r.expired ()
# => Sann
Søk
Reppy prøver å holde styr på verten, slik at du ikke må. Dette gjøres automatisk når du bruker hente, eller du kan velge å gi url du hentet den fra med parse. Gjør du det kan du gi akkurat den banen når spørring. Ellers må du gi hele url:
# Dette er gjennomførbart
r = reppy.fetch ('http://example.com/robots.txt')
r.allowed ('/')
r.allowed (['/ hallo', '/ howdy'])
# Og så er dette
data = urllib2.urlopen ('http://example.com/robots.txt') .read ()
r = reppy.parse (data, url = 'http: //example.com/robots.txt')
r.allowed (['/', '/ hallo', '/ howdy'])
# Men vi vet ikke implisitt vet hvilket domene disse er fra
reppy.allowed (['/', '/ hallo', '/ howdy'])
Crawl-Delay og områdekart
Reppy utsetter også den ikke-RFC, men mye brukt Crawl-Delay og Sitemaps attributter. Gjennomgangen forsinkelsen er vurdert på en per-bruker agent basis, men kart anses global. Hvis de ikke er spesifisert, er gjennomgangen forsinkelse Ingen, og områdekart 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 tilgjengelige:
med filen ('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 gi en bruker agent som du velger for å hente robots.txt, og deretter bruker agent strengen vi matche standarden er det som vises før første /. For eksempel, hvis du gi brukeren agenten som 'MyCrawler / 1,0 ", så får vi bruke" MyCrawler' som strengen å matche mot User-agent. Sammenligninger er store eller små bokstaver, og vi støtter ikke jokertegn i User-Agent. Hvis denne standard ikke passer deg, kan du gi et alternativ:
# Dette vil matche mot 'myuseragent som standard
r = reppy.fetch ('http://example.com/robots.txt', useragent = 'MyUserAgent / 1.0 ")
# Dette vil matche mot 'someotheragent "i stedet
r = reppy.fetch ('http://example.com/robots.txt', useragent = 'MyUserAgent / 1.0', userAgentString = 'someotheragent')
Bane-Matching
Sti matchende støtter både * og $

Egenskaper

  • Memoization of hentet robots.txt
  • Utløps tatt fra Utløper header
  • Batch spørsmål
  • Konfigurerbar user agent for å hente robots.txt
  • Automatisk refetching basere på utløps
  • Støtte for Crawl-forsinkelse
  • Støtte for nettkart
  • jokertegn

Krav

  • Python

Annen programvare fra utvikleren Dan Lecocq

aws-trade-in
aws-trade-in

20 Feb 15

asis
asis

20 Feb 15

Kommentarer til reppy

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!