Je me demande simplement si quelqu'un connaît une bibliothèque de web-scraping qui tire parti de la syntaxe succincte de Scala. Jusqu'à présent, j'ai trouvé Chafe , mais cela semble mal documenté et maintenu. Je me demande si quelqu'un a fait du scraping avec Scala et a des conseils). (J'essaie de m'intégrer dans un framework Scala existant plutôt que d'utiliser un grattoir écrit, par exemple, en Python.)
Tout d'abord, il y a une pléthore de bibliothèques de scraping HTML dans JVM, tout ce que vous avez à faire est de pimp l'un d'entre eux (pimp my library pattern) .
Les quatre que j'ai utilisés sont:
J'ai utilisé du sélénium mais jamais pour le grattage. Scala a une enveloppe autour du sélénium .
Je recommanderais de pimping une bibliothèque Java) existante sur une bibliothèque à moitié cuite Scala lib.
Je n'ai pas de recommandation spécifique à Scala, mais pour la JVM en général, j'ai eu un bon succès avec:
La route de Tagsoup fonctionne plutôt bien avec Scala puisque le XML intégré "dsl" de Scala est assez concis (si vous pouvez pardonner ses problèmes de perf et ses bizarreries d'API occasionnelles). De plus, Tagsoup gérera presque tout document indésirable que vous lui donnez.Il a également des subtilités comme la compréhension intégrée de nombreuses entités HTML sur lesquelles d'autres SAXParsers s'étoufferont comme non déclarées.
tl; dr - JSoup + sélecteurs CSS si possible, sinon Tagsoup + scala XML. Si slow is ok, tagsoup d'abord, puis jsoupez le résultat.
Je recommanderais Goose: https://github.com/jiminoc/goose
Ce n'est pas aussi général que vous pourriez avoir besoin, mais si vous récupérez le contenu d'un article à partir de sites populaires, cela peut fonctionner hors de la boîte. Il fournit également un cadre sur lequel vous pouvez travailler si vous souhaitez étendre leur code pour couvrir d'autres sites.