reppy indult ki a hiányzó memoization támogatásra más robots.txt elemzőt ütközött, és a támogatás hiánya a Crawl-delay és Honlaptérkép a beépített robotparser.
Matching
Ez a csomag támogatja a 1996 RFC, valamint további közösen megvalósított funkciók, mint a helyettesítő megfelelő, csúszás-késleltetés, és sitemaps. Vannak különböző megközelítések illő engedélyezése és tiltása. Az egyik megközelítés az, hogy használja a leghosszabb mérkőzés. A másik az, hogy a legsajátosabb. Ez a csomag úgy dönt, hogy kövesse az irányelv, amely a leghosszabb, az a feltételezés húzódik meg, hogy ez az egyetlen, amely a leginkább egyedi - a kifejezés, hogy egy kicsit nehéz meghatározni ebben az összefüggésben.
Használat
A legegyszerűbb módja, hogy használja reppy az, hogy csak kérni, ha egy URL-t vagy URL-ek / megengedettek:
import reppy
# Ez implicit előveszi example.com a robot.txt
reppy.allowed ("http://example.com/howdy ')
# => True
# Most, hogy által tárolt alapuló mikor fog lejárni (tovább a `Expiration`)
reppy.allowed ("http://example.com/hello ')
# => True
# Azt is támogatja kötegelt lekérdezések
reppy.allowed (['http://example.com/allowed1', 'http://example.com/allowed2', 'http://example.com/disallowed'])
# => ['Http://example.com/allowed1', 'http://example.com/allowed2']
# Batch lekérdezések támogatva van Átfedés több területen (bár a letöltések nem történik párhuzamosan)
reppy.allowed (['http://a.com/allowed', 'http://b.com/allowed', 'http://b.com/disallowed'])
# => ['Http://a.com/allowed', 'http://b.com/allowed']
Elég könnyen használható. Az alapértelmezett viselkedés, hogy hozza el az Ön számára urllib2
import reppy
# Készíts egy reppy tárgy társul egy adott tartományban
r = reppy.fetch ("http://example.com/robots.txt)
de akkor csak olyan könnyen elemezhető a húr, hogy túlzás.
import urllib2
data = urllib2.urlopen ("http://example.com/robots.txt) .read ()
R = reppy.parse (adatok)
Lejárat
A fő előnye, miután reppy letölteni a robots.txt az Ön számára, hogy képes automatikusan refetch után az adatok már lejárt. Ez teljesen átlátható neked, így nem is kell gondolni - csak tartsa használja, mint a normális. Vagy, ha azt szeretné, beállíthatja a saját time-to-live, amelyek elsőbbséget:
import reppy
r = reppy.fetch ("http://example.com/robots.txt)
r.ttl
# => 10800 (Meddig élnek?)
r.expired ()
# => False (Eltelt lejárt?)
r.remaining ()
# => 10798 (Meddig amíg le nem jár)
r = reppy.fetch ("http://example.com/robots.txt", ttl = 1)
# Várjon 2 másodpercet
r.expired ()
# => True
lekérdezések
Reppy igyekszik nyomon követni a fogadó, így nem kell. Ez automatikusan megtörténik, ha használja letölteni, vagy adott esetben tartalmazhat az URL-t túlzás azt a parse. Ha így lehetővé teszi, hogy csak az utat lekérdezésekor. Ellenkező esetben meg kell adni a teljes url:
# Ez megvalósítható
r = reppy.fetch ("http://example.com/robots.txt)
r.allowed ('/')
r.allowed (['/ hello', '/ howdy'])
# És így van ez
data = urllib2.urlopen ("http://example.com/robots.txt) .read ()
r = reppy.parse (adatok, url = 'http: //example.com/robots.txt)
r.allowed (['/', '/ hello', '/ howdy'])
# Mi azonban implicite nem tudom, melyik tartományba ezek re
reppy.allowed (['/', '/ hello', '/ howdy'])
Crawl-késleltetés és webhelytérképekről
Reppy is kiteszi a nem RFC, de széles körben használt Crawl-késleltetés és webhelytérképekről tulajdonítja. A csúszás késedelem tartják a per-user agent alapján, de a sitemaps tartják a globális. Ha ezek nincsenek pontosítva, a feltérképezés késleltetés nincs, sitemaps egy üres lista. Például, ha ez az én robots.txt:
User-agent: *
Crawl-delay: 1
Sitemap: http://example.com/sitemap.xml
Sitemap: http://example.com/sitemap2.xml
Aztán ezek elérhetők:
A fájl ('myrobots.txt', 'r'), mint 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
Tudod, hogy egy ágens az Ön által választott letöltésére robots.txt, majd a User Agent String mi felel meg alapértelmezetten mi jelenik meg, mielőtt az első /. Például, ha megadja a felhasználói ügynök "MyCrawler / 1,0", akkor fogjuk használni "MyCrawler", mint a reguláris User-agent. Összehasonlítások a kis- és nagybetűket, és nem támogatjuk Ezekről User-Agent. Ha ezt az alapértelmezett nem tetszik, akkor egy alternatív:
# Ez egyezik ellen "myuseragent" alapértelmezés szerint
r = reppy.fetch ("http://example.com/robots.txt", Hivatkozó = 'MyUserAgent / 1.0 ")
# Ez egyezik ellen "someotheragent" helyett
r = reppy.fetch ("http://example.com/robots.txt", Hivatkozó = 'MyUserAgent / 1,0 ", userAgentString =' someotheragent)
Path-Matching
Path találtunk egyaránt támogatja * és $
Tulajdonságok :
- Memoization A letöltött robots.txt
- lejárata vett elévülési fejlécben
- Batch lekérdezések
- Beállítható user agent letöltésére robots.txt
- Automatikus refetching alapozva lejárati
- Támogatás Crawl-delay
- Támogatás webhelytérképekről
- Helyettesítő karakterek
követelmények :
- Python
Hozzászólás nem található