Scrapy — Wikipédia
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
[modifier | modifier le code]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
[modifier | modifier le code]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
[modifier | modifier le code]- Scrapy 0.7 release candidate is available!, consulté le 17 août 2012
- Versioning and API Stability, consulté le 17 août 2012
- Scrapy Commercial support, consulté le 29 août 2012
- Scrapy overview, consulté le 17 août 2012
- Scrapy at a glance