Bonjour,
Ceci est un journal bookmark.
Scrapy est un framework python qui permet d'extraire des données structurées trouvées dans des sites web. Du crawling avec traitement de données.
Comme dit sur le site de présentation : "An open source and collaborative framework for extracting the data you need from websites. In a fast, simple, yet extensible way."
J'ai fait une présentation du framework hier au python user group de Grenoble (pyuggre comme on dit) ; si ça vous intéresse, la présentation est disponible sur Github, ainsi que les 3 exemples (dont un de crawling des news LinuxFR ;).
- Voir les slides de la présentation
- Voir les sources des 3 exemples
# Weboob
Posté par erdnaxeli (site web personnel) . Évalué à 10. Dernière modification le 30 janvier 2015 à 15:22.
Ça a l'air pas mal. Dans la même veine il y a Weboob. Ce n'est pas simplement un ensemble d'applications aux noms qui font polémique, c'est une aussi une bibliothèque (Browser 2) qui intègre tout le nécessaire pour faire du scraping (parsing, post, pagination, etc : tout).
La différence que je vois avec Scrapy, c'est que Browser 2 dispose de nombreux filtres qui font pas mal de boulot et permettent d'éviter de manipuler soit même du xpath. On décrit ce qu'on veut récupérer plus que faire le traitement soi-même. Je vous renvoie à cet article pour un peu plus d'info.
Pour avoir développé un module Weboob avec, c'est assez puissant et assez joli. Et on peut aussi parfaitement s'en servir pour un projet perso.
Il existe deux catégories de gens : ceux qui divisent les gens en deux catégories et les autres.
[^] # Re: Weboob
Posté par laurentb (site web personnel) . Évalué à 3.
scrapy est assez proche de ce que fait
weboob.browser
.À ma connaissance je n'ai pas trouvé d'équivalent des pages, filtres ou même d'une gestion des formulaires. En revanche il gère de base l'exportation des objets capturés ("pipeline").
Il faudrait que je me penche un peu plus sur la question (notamment faire un comparatif de fonctionnalités car la question revient souvent) mais de loin scrapy m'apparait plein de suppositions sur la façon de gérer un site et semble surtout adapté au « scraping » plutôt qu'à l'interaction dynamique avec un site. À noter que j'utilise déjà
weboob.browser
pour aspirer des sites énormes ; je n'ai pas l'impression que certaines de mes problématiques soient gérées, comme récupérer les mises à jour de façon efficace, ce qui implique de repasser sur certaines URLs.[^] # Re: Weboob
Posté par max22 . Évalué à 2.
scrapy permet de gérer les mises à jour des pages ?
[^] # Re: Weboob
Posté par laurentb (site web personnel) . Évalué à 2.
À ce que j'ai compris il ne s'occupe que des URLs, et parcourt une liste préformatée ou les liens présents dans les pages déjà visitées. Weboob lui ne voit pas d'URLs mais des objets (ça demande une correspondance objet vers URL), il peut donc récupérer des choses à la demande en plus de tout parcourir.
[^] # Re: Weboob
Posté par LeBouquetin (site web personnel, Mastodon) . Évalué à 4.
Scrapy commence son travail à partir d'une (ou plusieurs) requêtes (par défaut des urls, donc "crawlé" via un HTTP GET, mais le mécanisme est de gérer des requêtes).
Ensuite, c'est toi qui définit la mécanique de crawling et l'enrichissement des requêtes/urls à crawler.
Ma présentation est illustrée notamment par un exemple de crawling du site de l'APEC où les urls ne sont ni des boutons cliqués, ni des liens suivis mais des urls construites à partir des données trouvées dans les pages.
#tracim pour la collaboration d'équipe __ #galae pour la messagerie email __ dirigeant @ algoo
[^] # Re: Weboob
Posté par rzx . Évalué à 2.
Ouais enfin bon, scrapy c'est quand même plus sérieux qu'un projet dont le nom est "weboob"…
[^] # Re: Weboob
Posté par LeBouquetin (site web personnel, Mastodon) . Évalué à 6.
De ce que je comprends de weboob, le périmètre de Scrapy m'a l'air beaucoup plus large que weboob.browser. Tu peux notamment gérer une ferme de spiders, avec une API pour les monitorer / piloter.
Qu'appelles-tu les filtres ? Scrapy est architecturé pour extraire des données (là où Weboob est architecturé pour proposer des applications). Scrapy se décompose en 3 couches :
Le pipeline de Scrapy est extrêmement puissant, tu peux facilement chaîner les opérations (exemple : filtrage des données incomplètes, ou encore on peut imaginer une couche de "filtrage" qui va enrichir les données en corrélant ce qu'on extrait du crawling avec des données déjà en base, la suppression des doublons, etc, etc). Je ne connais pas Weboob sur cet aspect-là.
Quel genre de supposition ?
Comment tu fais pour récupérer les mises à jour sans repasser sur les URLs ?
#tracim pour la collaboration d'équipe __ #galae pour la messagerie email __ dirigeant @ algoo
[^] # Re: Weboob
Posté par LeBouquetin (site web personnel, Mastodon) . Évalué à 10.
Dans l'article que tu pointes, Browser2 s'appuie aussi sur XPath. Quand tu as ceci dans Browser2 :
Tu as l'équivalents dans Scrapy :
Je n'ai pas compris la différence.
#tracim pour la collaboration d'équipe __ #galae pour la messagerie email __ dirigeant @ algoo
# Gestion des modifications
Posté par denxp . Évalué à 1. Dernière modification le 30 janvier 2015 à 16:57.
Comment est gérée la modification de la structure d'une page ? Est-ce que des alertes sont remontées ?
Est-il prévu d'ajouter (ça existe peut-être déjà ) une I.A capable de détecter le type d'un site à partir d'une base de connaissance (annonces emploi, petites-annonces, blog…) et de produire les requêtes XPath ?
En tous cas bravo pour le projet, j'ai vu que pas mal de services l'utilisent.
[^] # Re: Gestion des modifications
Posté par LeBouquetin (site web personnel, Mastodon) . Évalué à 4.
Je pense que ça doit être implémenté à la main (je ne connais pas assez pour répondre à coup sûr).
Scrapy cherche à extraire des données structurées ; cela pré-suppose que l'on sait ce que l'on cherche. Dans ces conditions, les sites crawlés sont connus et la structure également.
En clair, si tu veux crawler des sites d'annonce, par exemple pour agréger les annonces de X sites différents, tu définis tes règles pour chaque site, et ensuite tu lance un crawler pour chacun des sites (la conception de Scrapy fait que tu peux définir quelles règles s'appliquent à quels sites).
Par contre ce n'est pas automatique et ça ne génère pas tes requêtes XPath pour la simple et bonne raison que c'est à toi de définir quelles sont les informations que tu recherches.
#tracim pour la collaboration d'équipe __ #galae pour la messagerie email __ dirigeant @ algoo
[^] # Re: Gestion des modifications
Posté par denxp . Évalué à 2. Dernière modification le 30 janvier 2015 à 17:44.
Arrhhh j'avais compris de traviole : je pensais que tu étais l'auteur de l'outil :-)
Je vais essayer de voir si des choses ont été faites autour de ces questions.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.