Scrapy

Scrapy
Description de l'image Scrapy logo.png.

Informations
Développé par Pablo Hoffman (d)
Dernière version 2.16.0 ()[1]
Dépôt github.com/scrapy/scrapy
Assurance qualité Intégration continue
Écrit en Python
Système d'exploitation Microsoft Windows, Linux, macOS et Berkeley Software Distribution
Environnement Multi-plateforme
Langues Anglais
Type Robot d'indexation
Licence BSD 3-clauses[2]
Site web www.scrapy.org

Scrapy est un framework open-source permettant la création de robots d'indexation. Développé en Python, il dispose d'une forte communauté, offrant de nombreux modules supplémentaires. La première version stable est publiée en [3]. Le framework dispose d'une communauté active, et un support commercial est effectué par plusieurs entreprises[4].

Caractéristiques

L'équipe responsable du développement du framework lui confère plusieurs caractéristiques[5] :

  • Simple : aucune notion avancée en Python n'est nécessaire pour utiliser Scrapy
  • Productif : l'empreinte de code à générer est très courte, la plupart des opérations sont gérées par Scrapy
  • Rapide : le framework est rapide, avec une gestion d'actions en parallèle notamment
  • Extensible : chaque robot peut être personnalisés via des extensions, modifiant son comportement
  • Portable : les robots Scrapy sont compatibles Linux, Windows, Mac et BSD
  • Open Source
  • Robuste, grâce à une batterie de tests effectuées aussi bien par les développeurs que la communauté

Exemple de robot

Le site web du projet propose un tutoriel détaillé sur l'utilisation de Scrapy[6]. Ce cours propose notamment plusieurs exemples, comme celui ci-contre, extrayant certains liens présents sur plusieurs pages web.

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector

from tutorial.items import DmozItem

class DmozSpider(BaseSpider):
   name = "dmoz"
   allowed_domains = ["dmoz.org"]
   start_urls = [
       "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
       "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
   ]

   def parse(self, response):
       hxs = HtmlXPathSelector(response)
       sites = hxs.select('//ul/li')
       items = []
       for site in sites:
           item = DmozItem()
           item['title'] = site.select('a/text()').extract()
           item['link'] = site.select('a/@href').extract()
           item['desc'] = site.select('text()').extract()
           items.append(item)
       return items

Notes et références

  1. ↑ « Release 2.16.0 », (consulté le )
  2. ↑ https://github.com/scrapy/scrapy/blob/master/LICENSE
  3. ↑ Scrapy 0.7 release candidate is available!, consulté le 17 août 2012
  4. ↑ Scrapy Commercial support, consulté le 29 août 2012
  5. ↑ Scrapy overview, consulté le 17 août 2012
  6. ↑ Scrapy at a glance
  • icône décorative Portail de la programmation informatique