reppy

Screenshot Software:
reppy
Mga detalye ng Software:
Bersyon: 0.1.0
I-upload ang petsa: 11 May 15
Nag-develop: Dan Lecocq
Lisensya: Libre
Katanyagan: 5

Rating: nan/5 (Total Votes: 0)

reppy nagsimula sa labas ng isang kakulangan ng memoization suporta sa ibang robots.txt parsers naranasan, at ang kakulangan ng suporta para sa Crawl-delay at Sitemap sa built-in robotparser.
Pagtutugma
Ang pakete na ito ay sumusuporta sa 1996 RFC, pati na rin ang karagdagang mga karaniwang-ipinatupad tampok, tulad ng wildcard matching, crawl-antala, at Sitemaps. May mga iba't ibang approach sa pagtutugma Payagan at Huwag Payagan. Isang paraan ay ang gamitin ang pinakamahabang match. Isa pang ay upang gamitin ang pinaka-tiyak. Piliin ang paketeng ito upang sundin ang mga direktiba na pinakamahabang, ang palagay ay na ito ay ang isa na pinaka-tiyak - isang term na iyon ay isang maliit na mahirap upang tukuyin ito sa konteksto.

Usage

Ang pinakamadaling paraan upang gamitin reppy ay upang magtanong lamang kung ang isang url o mga url ay / ay pinapayagan:
import reppy
# Ito kataon fetches robot.txt example.com ni
reppy.allowed ('http://example.com/howdy')
# => True
# Ngayon, ito ay naka-cache na batay sa kapag ito ay dapat mawalan ng bisa (magbasa nang higit pa sa `Expiration`)
reppy.allowed ('http://example.com/hello')
# => True
# Ito rin ay sumusuporta sa batch query
reppy.allowed (['http://example.com/allowed1', 'http://example.com/allowed2', 'http://example.com/disallowed'])
# => ['Http://example.com/allowed1', 'http://example.com/allowed2']
# Batch tanong ay kahit na suportado sa kabila ng ilang mga domain (bagaman fetches ay hindi ginawa kahanay)
reppy.allowed (['http://a.com/allowed', 'http://b.com/allowed', 'http://b.com/disallowed'])
# => ['Http://a.com/allowed', 'http://b.com/allowed']
Ito ay medyo madaling gamitin. Ang default na pag-uugali ay upang makuha ito para sa iyo sa urllib2
import reppy
# Gumawa ng isang reppy object na kaugnay sa isang partikular na domain
r = reppy.fetch ('http://example.com/robots.txt')
ngunit maaari ka lamang bilang madaling ma-parse ang isang string na iyong kinukuha.
import urllib2
data = urllib2.urlopen ('http://example.com/robots.txt') .read ()
r = reppy.parse (data)
Expiration
Ang pangunahing bentahe ng pagkakaroon reppy sunduin ang robots.txt para sa iyo na ito ay awtomatikong refetch pagkatapos ay napaso data nito. Ito ay ganap na transparent sa iyo, upang hindi mo na magkaroon ng kahit na isipin ang tungkol dito - lamang panatilihin ang paggamit nito bilang normal. O, kung gusto mo, maaari mong itakda ang iyong sariling oras-to-live, na tumatagal ng higit na kahalagahan:
import reppy
r = reppy.fetch ('http://example.com/robots.txt')
r.ttl
# => 10800 (Gaano katagal upang mabuhay?)
r.expired ()
# => False (May nag-expire na ito?)
r.remaining ()
# => 10798 (Gaano katagal hanggang nag-expire na ito)
r = reppy.fetch ('http://example.com/robots.txt', ttl = 1)
# Maghintay ng 2 segundo
r.expired ()
# => True
Mga Tanong
Reppy sumusubok na subaybayan ang mga host para hindi mo na kailangang. Ito ay awtomatikong ginagawa kapag gumagamit ka ng fetch, o maaari mong opsyonal na magbigay ng mga url mo kinukuha ito mula sa parse. Paggawa ng gayon ay nagbibigay-daan sa iyo na magbigay lamang ang mga landas kapag pagtanong ukol sa. Kung hindi, dapat kang magbigay ng buong url:
# Ito ay maaaring gawin
r = reppy.fetch ('http://example.com/robots.txt')
r.allowed ('/')
r.allowed (['/ hello', '/ howdy'])
# At kaya ito
data = urllib2.urlopen ('http://example.com/robots.txt') .read ()
r = reppy.parse (data, url = 'http: //example.com/robots.txt')
r.allowed (['/', '/ hello', '/ howdy'])
# Gayunpaman, hindi namin kataon malaman kung aling mga domain ng mga ito ay mula sa
reppy.allowed (['/', '/ hello', '/ howdy'])
Crawl-Delay at Sitemaps
Reppy nagbubukas din ang mga non-RFC, ngunit malawak na ginamit-crawl-Delay at Sitemaps katangian. Ang pagkaantala ng pag-crawl ay itinuturing sa isang per-user agent na batayan, ngunit ang mga sitemap ay itinuturing na global. Kung sila ay hindi tinukoy, ang pagkaantala ng pag-crawl ay None, at Sitemaps ay isang walang laman na listahan. Halimbawa, kung ito ay ang aking robots.txt:
User-agent: *
Crawl-delay: 1
Sitemap: http://example.com/sitemap.xml
Sitemap: http://example.com/sitemap2.xml
Pagkatapos ng mga ito ay mapupuntahan:
may file ('myrobots.txt', 'r') bilang f:
& Nbsp; r = reppy.parse (f.read ())
r.sitemaps
# => ['Http://example.com/sitemap.xml', 'http://example.com/sitemap2.xml']
r.crawlDelay
# => 1
User-Agent Pagtutugma
Maaari kang magbigay ng isang user agent na iyong pinili para sa pagkuha ng robots.txt, at pagkatapos ay ang user agent string tumutugma namin ay defaulted sa kung ano ang lumilitaw bago ang unang /. Halimbawa, kung ikaw ay nagbibigay ng mga user agent bilang 'MyCrawler / 1.0', pagkatapos namin gamitin ang 'MyCrawler' bilang ang string upang tumugma sa laban User-agent. Paghahambing ay case-insensitive, at hindi namin sinusuportahan ang mga wildcard sa User-Agent. Kung default na ito ay hindi angkop sa iyo, maaari kang magbigay ng isang alternatibo:
# Ito ay tumutugma laban sa 'myuseragent' sa pamamagitan ng default
r = reppy.fetch ('http://example.com/robots.txt', useragent = 'MyUserAgent / 1.0')
# Ito ay tumutugma laban sa 'someotheragent' sa halip
r = reppy.fetch ('http://example.com/robots.txt', useragent = 'MyUserAgent / 1.0', userAgentString = 'someotheragent')
Path-Matching
Sumusuporta matching Path pareho * at $

Features :

  • memoization ng imahinasyon robots.txt
  • Pag-expire na kinuha mula sa Matatapos header
  • queries Batch
  • Configure user agent para sa pagkuha ng robots.txt
  • Awtomatikong refetching basing sa expiration
  • Suporta para sa Crawl-delay
  • Suporta para sa Sitemaps
  • Wildcard matching

Kinakailangan :

  • sawa

Iba pang mga software developer ng Dan Lecocq

aws-trade-in
aws-trade-in

20 Feb 15

asis
asis

20 Feb 15

Mga komento sa reppy

Mga Komento hindi natagpuan
Magdagdag ng komento
I-sa mga imahe!