Utilisez Scrapy.
Il s'agit d'un framework de robot Web à base torsadée. Encore en développement lourd mais ça marche déjà. A de nombreux goodies:
- support intégré pour l'analyse syntaxique HTML, XML, CSV et Javascript
- Un pipeline de médias pour gratter les articles avec des images (ou tout autre média) et télécharger les fichiers d'image et
- Prise en charge de l'extension de Scrapy en connectant vos propres fonctionnalités à l'aide de middlewares, extensions et pipelines
- Large gamme de middlewares et d'extensions intégrés pour la gestion de la compression, du cache, des cookies, de l'authentification, de l'usurpation d'user-agent, du traitement robots.txt, statistiques, restriction de profondeur de crawl, etc
- console shell grattage interactif, très utile pour le développement et le débogage
- console de gestion Web pour le suivi et le contrôle de votre robot
- console Telnet pour un accès bas niveau au processus Scrapy
Exemple de code pour extraire des informations sur tous les fichiers torrent ajoutés aujourd'hui dans le site torrent mininova, en utilisant un sélecteur XPath sur le code HTML retourné:
class Torrent(ScrapedItem):
pass
class MininovaSpider(CrawlSpider):
domain_name = 'mininova.org'
start_urls = ['http://www.mininova.org/today']
rules = [Rule(RegexLinkExtractor(allow=['/tor/\d+']), 'parse_torrent')]
def parse_torrent(self, response):
x = HtmlXPathSelector(response)
torrent = Torrent()
torrent.url = response.url
torrent.name = x.x("//h1/text()").extract()
torrent.description = x.x("//div[@id='description']").extract()
torrent.size = x.x("//div[@id='info-left']/p[2]/text()[2]").extract()
return [torrent]