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 Scrapy 0.7 release candidate is available!, consulté le 17 août 2012. Le framework dispose d'une communauté active, et un support commercial est effectué par plusieurs entreprisesScrapy Commercial support, consulté le 29 août 2012.
Caractéristiques L'équipe responsable du développement du framework lui confère plusieurs caractéristiquesScrapy overview, consulté le 17 août 2012 : 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 ScrapyScrapy at a glance. 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
Catégorie:Framework de programmation Catégorie:Python