Scrapy

Scrapy
Description de l'image Scrapy logo.png.
Informations
Développé par Pablo Hoffman (d)
Dernière version 1.6.0 ()
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 Licence propriétaire Scrapy
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 a été publiée en [1]. Depuis, l'équipe de développement publie régulièrement de nouvelles versions dans le but d'enrichir le framework en fonctionnalité. L'objectif principal est d'obtenir une API stable pour la version 1.0[2]. Le framework dispose d'une communauté active, et un support commercial est effectué par plusieurs entreprises[3].

Le framework est compatible Python 2.7 et Python 3.6 ou au-dessus, sur la majorité des plates-formes.

Caractéristiques

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

  • 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[5]. 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. ↑ Scrapy 0.7 release candidate is available!, consulté le 17 août 2012
  2. ↑ Versioning and API Stability, consulté le 17 août 2012
  3. ↑ Scrapy Commercial support, consulté le 29 août 2012
  4. ↑ Scrapy overview, consulté le 17 août 2012
  5. ↑ Scrapy at a glance
  • icône décorative Portail de la programmation informatique