Web scraping avec GPT-4o : puissant, mais coûteux
(blancas.io)- Un article qui résume l'expérience de développement d'un scraper web assisté par IA à l'aide de la nouvelle fonctionnalité de sortie structurée d'OpenAI
Demander à GPT-4o de scraper des données
- La première expérimentation a consisté à demander à GPT-4o d'extraire des données à partir d'une chaîne HTML
- Une sortie structurée a été définie à l'aide d'un modèle Pydantic
from typing import List, Dict class ParsedColumn(BaseModel): name: str values: List[str] class ParsedTable(BaseModel): name: str columns: List[ParsedColumn] - Le prompt système était le suivant :
Vous êtes un expert en web scraping. Vous devez recevoir le contenu d'un tableau HTML et en extraire des données structurées
Parser des tableaux complexes
- Après avoir testé des tableaux simples, l'auteur a essayé des tableaux plus complexes, comme les prévisions météo sur 10 jours de Weather.com
- GPT-4o a ajouté une colonne
Day/Nightet a correctement parsé les données - La colonne
Conditionn'était pas visible sur le site web, ce qui a d'abord fait penser à une hallucination, mais l'inspection du code source a montré qu'il s'agissait bien d'une balise existante
Les lignes fusionnées font échouer le modèle
- Un tableau simple de Wikipédia (Human Development Index) a été testé, mais le modèle a échoué à cause des lignes fusionnées
- Modifier le prompt système n'a eu aucun effet
Demander à GPT-4o de renvoyer du XPath
- Pour réduire le coût des appels à l'API OpenAI, l'auteur a demandé au modèle de renvoyer du XPath plutôt que les données parsées
- Cependant, le modèle renvoyait souvent des XPath incorrects ou ne renvoyait pas les données
Combiner les deux approches
- Une approche consistant à extraire d'abord les données puis à demander du XPath en s'y référant a été testée
- Cette méthode a donné de meilleurs résultats, mais un problème est apparu : les images étaient converties en texte
GPT-4o est très coûteux
- Le scraping avec GPT-4o revient cher
- Une logique de nettoyage a été ajoutée pour supprimer les données inutiles des chaînes HTML afin de réduire les coûts
Conclusion et démo
- L'auteur a été impressionné par la qualité d'extraction de données de GPT-4o, mais déçu par la question du coût
- Une démo simple réalisée avec Streamlit est proposée
- Il reste encore beaucoup de points à améliorer via davantage d'expérimentations
Le résumé de GN⁺
- Cet article explore les possibilités et les limites du web scraping avec l'IA
- Il montre qu'il est possible d'extraire avec précision des données de tableaux complexes en exploitant la fonctionnalité de sortie structurée de GPT-4o
- Malgré les problèmes de coût et certaines limites techniques, il met en évidence le potentiel des outils de web scraping assistés par IA
- Parmi les autres projets offrant des fonctionnalités similaires, on peut citer BeautifulSoup et Scrapy
1 commentaires
Avis Hacker News
Faire passer le HTML dans un format simple (par ex. Markdown) avant de l’envoyer à un LLM s’est révélé efficace
Pour le contenu structuré (par ex. listes d’éléments, tableaux simples), un LLM n’est pas nécessaire
Étonnement de voir que l’auteur a réalisé 99 % du travail sans télécharger ni tester ollama pour le 1 % restant
Utilisation d’une méthode consistant à prendre une capture d’écran de la page, à découper la partie nécessaire, puis à l’envoyer à GPT
OpenAI a récemment annoncé la Batch API
Fournir un exemple HTML et demander un extrait de code BeautifulSoup s’est révélé efficace
Question sur l’existence d’un « html reducer »
Au lieu de faire le scraping directement avec GPT-4o, GPT-4o peut écrire un simple script de scraping web
Chez Kadoa, un travail est en cours sur l’automatisation du scraping web par IA
Construction en cours d’une base de données de musique classique
from_htmlde Pandas est utile, mais tous les tableaux n’utilisent pas la balise<table>