reppy

Sagteware kiekie:
reppy
Sagteware besonderhede:
Weergawe: 0.1.0
Upload datum: 11 May 15
Ontwikkelaar: Dan Lecocq
Lisensie: Gratis
Populariteit: 50

Rating: 4.0/5 (Total Votes: 1)

reppy begin van 'n gebrek aan ondersteuning in memoization ander robots.txt parsers teëgekom, en die gebrek aan ondersteuning vir Crawl-delay en Sitemap in die ingeboude in robotparser.
Pas
Hierdie pakket ondersteun die 1996 RFC, sowel as bykomende algemeen geïmplementeer funksies, soos wildcard passing, crawl-delay, en maps. Daar is verskillende benaderings tot ooreenstem Laat en Disallow. Een benadering is om die langste wedstryd gebruik. Nog is die mees spesifieke gebruik. Hierdie pakket kies om die richtlijn wat die langste, die aanname is dat dit is die een wat die meeste spesifieke volg - 'n term wat 'n bietjie moeilik om te definieer in hierdie konteks.

Gebruik

Die maklikste manier om reppy gebruik is om net te vra of 'n URL of URL's is / word toegelaat:
invoer reppy
# Hierdie haal implisiet robot.txt example.com se
reppy.allowed ('http://example.com/howdy')
# => True
# Nou, dit Cached gebaseer op wanneer dit moet verval (lees meer in `Expiration`)
reppy.allowed ('http://example.com/hello')
# => True
# Dit ondersteun ook batch navrae
reppy.allowed (['http://example.com/allowed1', 'http://example.com/allowed2', 'http://example.com/disallowed'])
# => ['Http://example.com/allowed1', 'http://example.com/allowed2']
# Batch navrae is selfs ondersteun regoor verskeie domeine (al gaan haal nie gedoen in parallel)
reppy.allowed (['http://a.com/allowed', 'http://b.com/allowed', 'http://b.com/disallowed'])
# => ['Http://a.com/allowed', 'http://b.com/allowed']
Dit is redelik maklik om te gebruik. Die verstek gedrag is om dit te gaan haal vir jou met urllib2
invoer reppy
# Maak 'n reppy voorwerp wat verband hou met 'n bepaalde domein
r = reppy.fetch ('http://example.com/robots.txt')
maar jy kan net so maklik ontleed 'n string wat jy gaan haal.
invoer urllib2
data = urllib2.urlopen ('http://example.com/robots.txt') .read ()
r = reppy.parse (data)
Expiration
Die grootste voordeel van 'reppy haal die robots.txt vir jou is dat dit outomaties kan refetch ná sy data verstryk. Dit is heeltemal deursigtig vir jou, so jy hoef nie eens te dink oor dit - hou net gebruik dit as normaal. Of, as jy verkies, kan jy jou eie tyd-tot-lewe, wat voorrang neem gestel:
invoer reppy
r = reppy.fetch ('http://example.com/robots.txt')
r.ttl
# => 10800 (Hoe lank om te lewe?)
r.expired ()
# => Vals (Het dit verstryk?)
r.remaining ()
# => 10.798 (Hoe lank totdat dit verval)
r = reppy.fetch ('http://example.com/robots.txt, TTL = 1)
# Wag 2 sekondes
r.expired ()
# => True
Navrae
Reppy probeer om tred te hou van die gasheer, sodat jy nie hoef te. Dit word outomaties gedoen word wanneer jy gebruik gaan haal, of jy kan opsioneel voorsien die url jy dit gaan haal uit met parse. Sodoende kan jy net die pad te voorsien wanneer die gebruik daarvan. Andersins, moet jy die hele url verskaf:
# Dit is uitvoerbaar
r = reppy.fetch ('http://example.com/robots.txt')
r.allowed ('/')
r.allowed (['/ hallo', '/ Howdy'])
# En so is hierdie
data = urllib2.urlopen ('http://example.com/robots.txt') .read ()
r = reppy.parse (data, url = http: //example.com/robots.txt ')
r.allowed (['/', '/ hallo', '/ Howdy'])
# Maar ons het nie implisiet weet watter domein hierdie is uit
reppy.allowed (['/', '/ hallo', '/ Howdy'])
Crawl-delay en maps
Reppy stel ook die nie-RFC, maar wyd gebruik Crawl-delay en maps eienskappe. Die crawl vertraag word beskou op 'n agent basis per gebruiker, maar die site maps is globale beskou. As hulle nie gespesifiseer, is die crawl vertraag is nie; maps is 'n leë lys. Byvoorbeeld, as dit is my robots.txt:
User-agent: *
Crawl-delay: 1
Sitemap: http://example.com/sitemap.xml
Sitemap: http://example.com/sitemap2.xml
Dan is dit toeganklik:
met lêer ('myrobots.txt', 'r') as f:
& Nbsp; r = reppy.parse (f.read ())
r.sitemaps
# => ['Http://example.com/sitemap.xml', 'http://example.com/sitemap2.xml']
r.crawlDelay
# => 1
User-agent ooreenstem
Jy kan 'n gebruiker agent van jou keuse vir die kry van robots.txt, en dan die gebruiker agent string ons wedstryd is gebreke aan wat voor die eerste / verskyn. Byvoorbeeld, as jy die gebruiker agent as 'MyCrawler / 1,0 ", dan sal ons' MyCrawler 'gebruik die string te pas teen User-agent. Vergelykings geval-onsensitief, en ons ondersteun nie wildcards in User-Agent. As dit verstek jou nie pas nie, kan jy 'n alternatief bied:
# Hierdie sal ooreenstem teen 'myuseragent' by verstek
r = reppy.fetch ('http://example.com/robots.txt, Referer =' MyUserAgent / 1,0 ')
# Dit sal plaas wedstryd teen 'someotheragent'
r = reppy.fetch ('http://example.com/robots.txt, Referer =' MyUserAgent / 1,0, userAgentString = 'someotheragent')
Pad-Matching
Pad bypassende ondersteun beide * en $

Eienskappe :

  • Memoization van vergesog robots.txt
  • Expiration geneem uit die Verval kop
  • Batch navrae
  • Konfigureerbare gebruiker agent vir haal robots.txt
  • Outomatiese refetching baseer op verstryking
  • Ondersteuning vir Crawl-delay
  • Ondersteuning vir maps
  • Wildcard bypassende

Vereistes :

  • Python

Ander sagteware ontwikkelaar Dan Lecocq

aws-trade-in
aws-trade-in

20 Feb 15

asis
asis

20 Feb 15

Kommentaar te reppy

Kommentaar nie gevind
Kommentaar te lewer
Draai op die foto!