-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
🔗 DAG Airflow pour crawler les URLs #1301
base: main
Are you sure you want to change the base?
Conversation
fda8ad2
to
a1ab720
Compare
J'ai parcouru rapidement la PR mais il est tard et mon cerveau embrumé. J'imagine une situation où un site down au moment du crawl occasionnera un écrasement de la valeur, ce qui serait dommage.
En fait la question c'est : est-ce qu'on reprend la valeur de la dernière révision ou l'url originale lors des crawls successifs ? |
Oui à terme on devrait. Beaucoup de limitations actuellement:
Gérer une infrastructure de crawling peut devenir très complexe, et donc il faudra qu'on se pose la question de savoir si on veut créer ou louer (il y a bcp de SaaS qui offrent ce genre de services). On a commencé à tester avec @chrischarousset et on pense que pour la v1 on va même pas faire de crawling et plutôt s'orienter vers la résolution DNS pour identifier les sites qui sont à priori complètement mort. |
a0f8c07
to
17e01fc
Compare
🔗 DAG Airflow pour crawler les URLs
Carte Notion : Vérification & corrections des URLs: DAG Airflow
🗺️ contexte: 12K URLs uniques pour le champ
acteur.url
, bcp d'erreurs constatées, trop de travail de vérifier à la main💡 quoi: un DAG airflow
🎯 pourquoi: automatiser les vérfications & suggestions d'URL
🤔 comment:
crawl_urls_read_urls_from_db_task
= récupère URLs de la DB, en groupant par URL et concaténant les acteurscrawl_urls_check_syntax_task
= éssaye de détecter/résoudre les problèmes de syntax (ex:nourl
-> erreur,monsite.com
-> essayerhttps://monsite.com
)crawl_urls_check_dns_task
= éssaye de résoudre le nom de domaine des URLscrawl_urls_check_crawl_task
= éssaye de crawler les URLs. 🔴 Bcp faux positifs ici, on garde que les cohortes fiables, voir plus d'infos icicrawl_urls_suggest_syntax_fail_task
= cohorte de suggestions 🔴 Syntaxe invalide -> mise à videcrawl_urls_suggest_dns_fail_task
= cohorte de suggestions 🔴 Domaine inaccessible -> mise à videcrawl_urls_suggest_crawl_diff_https_task
= cohorte de suggestions 🟡 URL différente HTTPs dispo -> HTTPs proposéecrawl_urls_suggest_crawl_diff_other_task
= cohorte de suggestions 🟡 URL différente (et pas juste HTTPs) -> nouvelle proposée🆕 Nouveautés techniques
🧱 constantes via dataclasses
dags/crawl/config/*
: pour avoir autocompletion IDE, 1 seul import par type de constantes (au lieu de 1 par constante)💬 XCOM helper
dags/crawl/config/xcoms.py
avec un utilitaire pour faire des pulls plus fiables avec du debug automatique🖼️ Exemple
crawl_urls_read_from_db_task
crawl_urls_check_syntax_task
On voit des URLs qu'on arrive à nettoyer (ex:
thttps://www.ressourceriemalakoff.org/
-> la même sans let
au début) et d'autres totallement irrécupérables (ex:NA
,https://-/
)Django: cohorte
Dev
Là pour une raison que j'ignore, ayant bien fait le déploiement en prepod, Django n'arrive pas à récupérer le template de suggestions
📆 A faire dans une prochaine PR
crawl_urls_check_urls_task
, voir discussion