reppy

Logiciel capture d'écran:
reppy
Détails logiciels:
Version: 0.1.0
Date de transfert: 11 May 15
Développeur: Dan Lecocq
Licence: Gratuit
Popularité: 5

Rating: nan/5 (Total Votes: 0)

Reppy a commencé d'un manque de soutien de memoization dans d'autres analyseurs robots.txt rencontrées, et le manque de soutien pour Crawl-délai et dans le Plan du site robotparser intégré.
correspondants
Ce package prend en charge RFC 1996, ainsi que des fonctionnalités couramment mises en œuvre supplémentaires, comme la correspondance générique, ramper retard, et sitemaps. Il ya des approches différentes correspondant à autoriser et empêcher. Une approche consiste à utiliser le plus long match. Une autre est d'utiliser le plus spécifique. Ce forfait choisit de suivre la directive qui est plus longue, l'hypothèse étant qu'il est celui qui est le plus spécifique - un terme qui est un peu difficile à définir dans ce contexte.

Utilisation

La meilleure façon d'utiliser Reppy est de demander simplement si une URL ou URL est / sont autorisés:
Reppy d'importation
# Ceci récupère implicitement la robot.txt de example.com
reppy.allowed ('http://example.com/howdy')
# => True
# Maintenant, il est mis en cache basée sur le moment où il doit expirer (lire la suite dans `Expiration`)
reppy.allowed ('http://example.com/hello')
# => True
# Il prend également en charge les requêtes de lots
reppy.allowed (['http://example.com/allowed1', 'http://example.com/allowed2', 'http://example.com/disallowed'])
# => ['Http://example.com/allowed1', 'http://example.com/allowed2']
# requêtes de lots sont encore pris en charge accross plusieurs domaines (bien que les extractions ne sont pas effectuées en parallèle)
reppy.allowed (['http://a.com/allowed', 'http://b.com/allowed', 'http://b.com/disallowed'])
# => ['Http://a.com/allowed', 'http://b.com/allowed']
Il est assez facile à utiliser. Le comportement par défaut est de chercher pour vous avec urllib2
Reppy d'importation
# Faites un objet Reppy associé à un domaine particulier
r = reppy.fetch ('http://example.com/robots.txt')
mais vous pouvez tout aussi facilement analyser une chaîne que vous récupérés.
urllib2 d'importation
data = urllib2.urlopen ('http://example.com/robots.txt') .read ()
r = reppy.parse (données)
Expiration
Le principal avantage d'avoir Reppy chercher le fichier robots.txt pour vous est qu'il peut automatiquement extraire à nouveau après son expiration des données. Il est complètement transparente pour vous, alors vous ne devez pas même y penser - il suffit de continuer à utiliser cela comme normal. Ou, si vous préférez, vous pouvez définir votre propre temps à vivre, qui prévaut:
Reppy d'importation
r = reppy.fetch ('http://example.com/robots.txt')
r.ttl
# => 10800 (Combien de temps à vivre?)
r.expired ()
# => False (At-il expiré?)
r.remaining ()
# => 10798 (Combien de temps jusqu'à ce qu'il expire)
r = reppy.fetch ('http://example.com/robots.txt', TTL = 1)
# Attendez deux secondes
r.expired ()
# => True
Requêtes
Reppy essaie de garder une trace de l'hôte de sorte que vous ne devez pas. Ceci est fait automatiquement lorsque vous utilisez chercher, ou vous pouvez éventuellement fournir l'URL que vous avez récupérés à partir de l'analyse. Cela vous permet de fournir simplement le chemin lors de l'interrogation. Sinon, vous devez fournir l'ensemble url:
# Ceci est faisable
r = reppy.fetch ('http://example.com/robots.txt')
r.allowed ('/')
r.allowed (['/ bonjour', '/ allo'])
# Et telle est cette
data = urllib2.urlopen ('http://example.com/robots.txt') .read ()
r = reppy.parse (données, url = 'http: //example.com/robots.txt')
r.allowed (['/', '/ bonjour', '/ allo'])
# Cependant, nous ne savons pas implicitement quel domaine ce sont de
reppy.allowed (['/', '/ bonjour', '/ allo'])
Crawl-Delay et Sitemaps
Reppy expose également le non-RFC, mais largement utilisé Crawl-Delay et Sitemaps attributs. Le délai d'analyse est considérée sur une base de l'agent par utilisateur, mais les sitemaps sont considérés mondiale. Si elles ne sont pas spécifiées, le délai d'analyse est Aucun, et sitemaps est une liste vide. Par exemple, si ceci est mon robots.txt:
User-agent: *
Crawl-delay: 1
Plan du site: http://example.com/sitemap.xml
Plan du site: http://example.com/sitemap2.xml
Puis ceux-ci sont accessibles:
avec le fichier ('myrobots.txt', 'r') comme f:
& Nbsp; r = reppy.parse (f.read ())
r.sitemaps
# => ['Http://example.com/sitemap.xml', 'http://example.com/sitemap2.xml']
r.crawlDelay
# => 1
User-Agent correspondants
Vous pouvez fournir un agent d'utilisateur de votre choix pour aller chercher robots.txt, puis la chaîne de l'agent utilisateur, nous Match est en défaut à ce qui apparaît avant le premier /. Par exemple, si vous fournissez l'agent utilisateur comme «MyCrawler / 1.0 ', puis nous utilisons' MyCrawler 'que la chaîne à faire correspondre contre User-agent. Les comparaisons sont insensibles à la casse, et nous ne prennent pas en charge les caractères génériques dans User-Agent. Si ce défaut ne vous convient pas, vous pouvez offrir une alternative:
# Cela correspondra contre «myuseragent 'par défaut
r = reppy.fetch ('http://example.com/robots.txt', userAgent = 'MyUserAgent / 1,0')
# Cela correspondra contre «someotheragent 'à la place
r = reppy.fetch ('http://example.com/robots.txt', userAgent = 'MyUserAgent / 1,0', userAgentString someotheragent '' =)
Chemin-Matching
Chemin appariement supporte à la fois * et $

Caractéristiques :

  • Memoization de robots.txt récupérée
  • Expiration de la prise Expire-tête
  • les requêtes de lots
  • agent utilisateur configurable pour aller chercher robots.txt
  • baser de refetching automatique à l'expiration
  • Soutien à Crawl-delay
  • Soutien à Sitemaps
  • correspondance générique

Exigences :

  • Python

D'autres logiciels de développeur Dan Lecocq

asis
asis

20 Feb 15

aws-trade-in
aws-trade-in

20 Feb 15

Commentaires à reppy

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!