📄 Scraper une Facture sur un Fichier PDF avec Python 🚀

00:17:29
https://www.youtube.com/watch?v=V31I5qeGEIs

الملخص

TLDRDans cette vidéo, l'auteur présente un tutoriel sur le scraping de fichiers PDF avec Python, en se concentrant sur l'extraction de données à partir de factures. Il explique les différences entre le scraping de sites web et de fichiers PDF, en soulignant l'importance d'utiliser des bibliothèques comme PDFPlumber pour extraire le texte et Pandas pour manipuler les données. Le tutoriel couvre l'extraction de données statiques (date, numéro de facture, client) et dynamiques (détails des prestations) et montre comment organiser ces données dans un fichier CSV ou Excel. À la fin, l'auteur encourage les spectateurs à adapter le script pour extraire plusieurs factures et à le partager sur son canal Telegram.

الوجبات الجاهزة

  • 📄 Scraping de PDF vs. sites web : méthodes différentes
  • 🔍 Utilisation de PDFPlumber pour extraire du texte
  • 📊 Pandas pour manipuler et exporter des données
  • 🗂️ Distinction entre données statiques et dynamiques
  • 📅 Extraction de la date, numéro de facture et client
  • 💻 Exemple de facture disponible sur Telegram
  • 📈 Exportation des données vers Excel ou CSV
  • 🔄 Possibilité de scraper plusieurs factures
  • ✉️ Contact pour services de web scraping
  • 👍 Soutien à l'auteur via abonnements et likes

الجدول الزمني

  • 00:00:00 - 00:05:00

    Dans cette vidéo, l'auteur explique la différence entre le scraping de sites web et le scraping de fichiers PDF, en mettant en avant les défis uniques liés à l'extraction de données à partir de PDF, notamment les factures. Il précise que pour scrapper un fichier PDF, l'approche est différente, nécessitant certaines librairies Python telles que PDFPlumber et Pandas. L'objectif final est de créer un fichier CSV ou Excel contenant les données extraites.

  • 00:05:00 - 00:10:00

    L'auteur aborde ensuite les différentes catégories de données dans une facture : les données statiques (comme le nom du client, la date et le numéro de facture) et les données dynamiques (telles que les détails des prestations et leurs prix). Il commence par établir un processus pour extraire ces informations du PDF à l'aide d'expresions régulières (regex) et montre un exemple pratique d'extraction de la date, du numéro de facture et du nom du client en utilisant Python et PDFPlumber.

  • 00:10:00 - 00:17:29

    Enfin, l'auteur montre comment extraire les données dynamiques des prestations, y compris la description, la quantité et le prix, en utilisant des regex spécifiques pour chaque type de données. Il termine en convertissant les données collectées dans un DataFrame avec Pandas et en sauvegardant les résultats dans un fichier Excel, incitant les spectateurs à mettre en pratique ce qu'ils ont appris pour scrapper plusieurs factures et améliorer le script.

الخريطة الذهنية

فيديو أسئلة وأجوبة

  • Quelles bibliothèques Python sont nécessaires pour scraper un PDF ?

    Les bibliothèques nécessaires sont PDFPlumber pour extraire le texte du PDF, Pandas pour manipuler les données, et Openpyxl si vous souhaitez exporter vers Excel.

  • Comment distinguer les données statiques des données dynamiques dans une facture ?

    Les données statiques incluent des informations comme la date, le numéro de facture et le client, tandis que les données dynamiques se trouvent dans le tableau des prestations.

  • Comment exporter les données extraites vers un fichier Excel ?

    Utilisez la bibliothèque Pandas pour créer un DataFrame à partir des données extraites, puis enregistrez-le avec la méthode 'to_excel'.

  • Peut-on scraper plusieurs factures à la fois ?

    Oui, il suffit d'adapter le script pour traiter plusieurs fichiers ou plusieurs pages d'un même fichier.

  • Où puis-je trouver un exemple de facture pour m'entraîner ?

    L'auteur propose de partager un exemple de facture sur son canal Telegram.

عرض المزيد من ملخصات الفيديو

احصل على وصول فوري إلى ملخصات فيديو YouTube المجانية المدعومة بالذكاء الاصطناعي!
الترجمات
fr
التمرير التلقائي:
  • 00:00:00
    scraper un PDF et scraper un site web ce
  • 00:00:03
    sont deux choses totalement différentes
  • 00:00:04
    lorsque l'on scrapent un site web on se
  • 00:00:07
    base sur le code HTML on a des éléments
  • 00:00:10
    distinctifs facilement identifiables
  • 00:00:12
    mais sur un PDF il n'y a pas tout ça et
  • 00:00:15
    pourtant sur un PDF il peut y avoir tout
  • 00:00:18
    un tas d'informations utiles et c'est
  • 00:00:21
    notamment le cas lorsqu'on scrapent des
  • 00:00:22
    factures l'approche sera donc
  • 00:00:24
    nécessairement différente mais elle
  • 00:00:26
    reste néanmoins possibles et voici
  • 00:00:28
    comment juste avant de commencer si vous
  • 00:00:31
    avez besoin d'une prestation de ce type
  • 00:00:33
    ou d'une prestation en webstrapping de
  • 00:00:35
    manière générale vous pouvez me demander
  • 00:00:37
    mes tarifs et m'expliquer votre demande
  • 00:00:40
    via cette adresse email vous l'avez
  • 00:00:42
    compris dans cette vidéo on va scrapper
  • 00:00:45
    un fichier PDF avec Python auparavant on
  • 00:00:48
    va un petit peu déterminer les enjeux de
  • 00:00:50
    ce scrap les enjeux de ce tutoriel on a
  • 00:00:53
    du coup sous les yeux une facture votre
  • 00:00:55
    facture la mienne pour le coup est
  • 00:00:57
    fictive pour des raisons de
  • 00:00:59
    confidentialité
  • 00:01:00
    mais si néanmoins vous souhaitez prendre
  • 00:01:02
    exactement la même pour vous entraîner
  • 00:01:04
    et pour éviter de potentielles erreurs
  • 00:01:06
    j'essaierai de vous la mettre sur mon
  • 00:01:08
    canal telegram le lien est en
  • 00:01:10
    description deuxièmement on va faire une
  • 00:01:12
    distinction entre les données dites
  • 00:01:14
    statiques et les données dynamiques
  • 00:01:16
    l'objectif c'est qu'à la fin on est un
  • 00:01:19
    fichier CSV ou Excel avec 3 lignes donc
  • 00:01:22
    une ligne pour chacune des prestations
  • 00:01:25
    on aura du coup d'un côté les données
  • 00:01:26
    statiques c'est à dire les données qui
  • 00:01:28
    par définition ne vont pas être
  • 00:01:29
    modifiées peu importe le type de
  • 00:01:31
    prestation que l'on veut avoir en
  • 00:01:33
    d'autres termes c'est tout ce qui n'est
  • 00:01:35
    pas inclus dans ce tableau ça peut être
  • 00:01:37
    le nom du client ça peut être la date ça
  • 00:01:39
    peut être le numéro de la facture ce
  • 00:01:41
    genre de chose et enfin on a les données
  • 00:01:42
    dynamiques les données dynamiques ce
  • 00:01:44
    sont les données qui sont dans le
  • 00:01:46
    tableau les données qui vont être
  • 00:01:47
    variables par exemple si on veut une
  • 00:01:49
    colonne description on aura sur la
  • 00:01:51
    première ligne workflow parts sur la
  • 00:01:53
    deuxième ligne extraction de données 40
  • 00:01:56
    000 cellules et sur la troisième ligne
  • 00:01:57
    coaching et on réplique le même
  • 00:01:59
    processus sur la le prix unitaire et le
  • 00:02:01
    total net maintenant étant donné qu'on a
  • 00:02:03
    dit qu'on va utiliser Python pour faire
  • 00:02:05
    ce scrap de ce fichier PDF il va y avoir
  • 00:02:08
    quelques librairies à importer j'ai fait
  • 00:02:11
    la liste non en vrai il y en a que 4 on
  • 00:02:13
    a d'abord openix XL si vous souhaitez
  • 00:02:15
    importer votre résultat dans un fichier
  • 00:02:18
    Excel on a par la suite pandas qui va
  • 00:02:21
    nous aider à manipuler nos données et
  • 00:02:23
    aller mettre sous un format de tableau
  • 00:02:24
    on a après PDF plumber PDF plumber comme
  • 00:02:27
    son nom l'indique encore une fois c'est
  • 00:02:29
    ce qui va nous permettre d'extraire
  • 00:02:31
    notre fichier PDF extraire tout le texte
  • 00:02:34
    à l'intérieur et enfin en tant
  • 00:02:36
    qu'éditeur de texte j'ai pris Jupiter
  • 00:02:38
    Lab j'ai du coup copier coller mon
  • 00:02:40
    fichier PDF dans le même endroit que mon
  • 00:02:42
    notebook et la première chose que l'on
  • 00:02:44
    va faire c'est que l'on va importer
  • 00:02:47
    PDF plumber et la deuxième chose que
  • 00:02:50
    l'on va faire c'est que l'on va ouvrir
  • 00:02:51
    notre fichier PDF on va du coup taper
  • 00:02:54
    wave PDF plumber dot open on va noter le
  • 00:02:59
    chemin de notre fichier PDF pour ma part
  • 00:03:02
    je l'ai noté facture exemple point PDF
  • 00:03:06
    aspire et là on va mettre deux choses on
  • 00:03:09
    va noter la page que l'on veut extraire
  • 00:03:11
    dans notre cas c'est assez simple parce
  • 00:03:13
    qu'on a qu'une seule page néanmoins si
  • 00:03:15
    on avait plusieurs pages à extraire rien
  • 00:03:17
    ne nous aurait empêché de faire une
  • 00:03:18
    boucle et en deuxième lieu on va
  • 00:03:20
    extraire le texte de ces pages on va du
  • 00:03:22
    coup taper page
  • 00:03:28
    parce que c'est la première page et
  • 00:03:31
    après on aura le texte qui sera du coup
  • 00:03:33
    à partir de la page donc page dot
  • 00:03:37
    extract texte on va attendre un petit
  • 00:03:40
    peu voilà on a du coup la page avec
  • 00:03:43
    qu'une seule page et plus intéressant on
  • 00:03:45
    a le texte où on a l'entièreté du texte
  • 00:03:48
    on va commencer par les données
  • 00:03:50
    statiques et plus particulièrement sur
  • 00:03:52
    la date on va extraire en tout trois
  • 00:03:54
    données statiques la date le numéro de
  • 00:03:57
    facture et un petit peu plus compliqué
  • 00:03:59
    le client de ça jusqu'à là commençons
  • 00:04:04
    par la date alors déjà j'ai envie de
  • 00:04:05
    faire quelque chose d'un petit peu plus
  • 00:04:06
    visuel parce que vous voyez qu'ici deux
  • 00:04:08
    facto on a tout sur une seule ligne
  • 00:04:10
    ouais du coup faire quelque chose
  • 00:04:12
    forline in textot split et on va le
  • 00:04:15
    spliter sur un saut de ligne parce que
  • 00:04:18
    par défaut si on regarde bien il y avait
  • 00:04:22
    des backs la chaîne un peu partout ici
  • 00:04:24
    ici ici donc on va rendre la chose un
  • 00:04:27
    petit peu plus visuelle on va print la
  • 00:04:30
    ligne et voilà ce qu'on a de ce fait on
  • 00:04:32
    peut déjà déterminer avec un petit peu
  • 00:04:34
    plus d'aisance que la date est située en
  • 00:04:37
    dessous du texte date et ça ça ne
  • 00:04:40
    changera jamais mais alors comment
  • 00:04:41
    est-ce qu'on va faire pour extraire la
  • 00:04:43
    date à chaque fois qu'est ce qu'on va
  • 00:04:45
    faire on va du coup utiliser des RX on
  • 00:04:48
    va dire que on veut commencer par le mot
  • 00:04:51
    date sans pour autant sélectionner le
  • 00:04:53
    mot date en d'autres termes on va
  • 00:04:55
    utiliser ce qu'on appelle un positive
  • 00:04:56
    look behind oui j'ai un peu de culture
  • 00:04:58
    du coup je l'étale vous permettez que je
  • 00:05:01
    me la pète un peu merci et par la suite
  • 00:05:04
    on va dire qu'on veut sauter la ligne et
  • 00:05:06
    extraire la vraie date on va commencer
  • 00:05:08
    par importer nos rivex donc on va faire
  • 00:05:12
    une porte et on va d'abord écrire la
  • 00:05:17
    Redex avant de l'utiliser donc je vais
  • 00:05:19
    faire dattre est égal re dot comme pile
  • 00:05:22
    donc R2 compil ça qui nous permettent de
  • 00:05:25
    créer la relief de créer un pattern de
  • 00:05:28
    rigax on va insérer ici notre reggaix
  • 00:05:30
    qui sera du coup on l'a dit qu'il va
  • 00:05:33
    commencer par le mot date alors le
  • 00:05:34
    positive look behin ça commence par une
  • 00:05:37
    sorte de groupe on met un point
  • 00:05:39
    d'interrogation on met un signe
  • 00:05:42
    inférieur je crois son mais égal et on
  • 00:05:45
    met le texte donc ou notre règle de
  • 00:05:47
    manière générale mais ici c'est bel et
  • 00:05:50
    bien date et par la suite c'est pas
  • 00:05:52
    entièrement terminé on va mettre un bac
  • 00:05:54
    slash n pour dire qu'il y a un saut de
  • 00:05:56
    ligne et enfin on sélectionne tout donc
  • 00:05:58
    point plus on sélectionne toute la ligne
  • 00:06:00
    d'en dessous on ferme voilà on entre et
  • 00:06:03
    maintenant on va extraire la date à
  • 00:06:05
    partir de ça on va du coup taper date on
  • 00:06:06
    va partir sur ce qu'on a écrit et on va
  • 00:06:09
    utiliser point search R2 dot search qui
  • 00:06:12
    va nous permettre de chercher comme son
  • 00:06:14
    nom l'indique quelque chose là-dedans
  • 00:06:16
    qui répond à cette rigueix donc on va le
  • 00:06:19
    rechercher dans le texte par conséquent
  • 00:06:21
    et si on a perdu l'erreur ça veut dire
  • 00:06:23
    que déjà quelque chose a été trouvé ce
  • 00:06:25
    qui est une bonne nouvelle et
  • 00:06:26
    effectivement on a bel et bien la date
  • 00:06:28
    ici mais par défaut on a un objet re
  • 00:06:31
    d'autres matchs et moi idéalement
  • 00:06:33
    j'aimerais juste avoir le string ça veut
  • 00:06:35
    dire juste à voir balade enfin 29 04
  • 00:06:39
    2023 auquel cas on va chercher le groupe
  • 00:06:42
    on va mettre point groupe et ça commence
  • 00:06:44
    par 0 donc si je mets point groupe 0
  • 00:06:47
    j'obtiendrai le premier groupe donc
  • 00:06:48
    j'aurai cette donnée là on fait le test
  • 00:06:50
    et vous voyez qu'on appelle bien la date
  • 00:06:53
    on va faire la même chose sur la facture
  • 00:06:55
    donc on peut presque faire un
  • 00:06:57
    copier-coller on va l'appeler juste
  • 00:06:59
    facture et Red Hot compil et la seule
  • 00:07:02
    différence c'est que le texte c'est
  • 00:07:04
    numéro de facture et non pas date voici
  • 00:07:07
    et on va parler copier coller cette
  • 00:07:11
    ligne là on va l'appeler facture
  • 00:07:14
    ça se base sur facture
  • 00:07:17
    d'autres search toujours sur le texte le
  • 00:07:20
    groupe zéro et on va voir ce qu'il en
  • 00:07:22
    est on a bel et bien la facture on va
  • 00:07:24
    terminer par la dernière donnée statique
  • 00:07:26
    à savoir le client le client comme on
  • 00:07:29
    l'a dit ce sera un petit peu plus
  • 00:07:30
    compliqué étant donné qu'il est
  • 00:07:33
    répertorié sur plusieurs lignes mais le
  • 00:07:34
    principe reste le même c'est à dire que
  • 00:07:36
    le client est toujours situé entre ce
  • 00:07:39
    texte là donc un positif Luke behind et
  • 00:07:42
    le texte description donc un positive
  • 00:07:45
    look head c'est exactement la même chose
  • 00:07:47
    sauf que là on dit ça se termine par
  • 00:07:49
    description mais on ne va pas prendre le
  • 00:07:52
    texte description en compte vu qu'on a
  • 00:07:54
    dit que le principe restait le même on
  • 00:07:56
    va procéder de la même manière client
  • 00:08:01
    on commence par
  • 00:08:03
    ce texte donc on reste sur un positive
  • 00:08:06
    look behind
  • 00:08:08
    ici on va mettre un pax/n aussi mais là
  • 00:08:12
    étant donné qu'il y aura plusieurs
  • 00:08:14
    lignes on va mettre un groupe
  • 00:08:18
    on saute on sélectionne tout
  • 00:08:22
    donc on est ici et on va de nouveau
  • 00:08:24
    sauter une ligne et on va répliquer le
  • 00:08:27
    processus une ou plusieurs fois donc ça
  • 00:08:30
    va faire
  • 00:08:31
    tac tac tac tac tac et ça se termine par
  • 00:08:36
    description pour le positif look head
  • 00:08:38
    c'est à peu près le même principe à la
  • 00:08:42
    nuance près qu'on va pas mettre le signe
  • 00:08:44
    inférieur donc c'est point
  • 00:08:45
    d'interrogation égal et le texte
  • 00:08:48
    description
  • 00:08:50
    je pense que c'est bon de toute façon on
  • 00:08:53
    sera bientôt fixé et pareil on a du coup
  • 00:08:56
    le client on se base sur le client
  • 00:08:59
    search groupe 0 on a quelque chose on va
  • 00:09:02
    voir ce qu'on a on a Tintin et Milou
  • 00:09:04
    jusqu'à moule à gaufre impeccable mais
  • 00:09:07
    là étant donné qu'on a traduit la chose
  • 00:09:09
    en string on a littéralement le
  • 00:09:11
    backslash n comme étant du texte donc si
  • 00:09:14
    vraiment on veut nettoyer un peu les
  • 00:09:15
    données on peut dire qu'on va remplacer
  • 00:09:17
    le back/ N par un espace et par la suite
  • 00:09:20
    on peut faire un petit strip parce que
  • 00:09:22
    on aura un espace à la fin qui n'est pas
  • 00:09:24
    nécessaire donc on va faire client est
  • 00:09:27
    égal client d’autres place
  • 00:09:31
    par un espace
  • 00:09:35
    et pour un strip et si on regarde le
  • 00:09:37
    client maintenant on a quelque chose
  • 00:09:39
    d'un petit peu plus clean à présent on
  • 00:09:42
    va parler des données dynamiques c'est à
  • 00:09:44
    dire des données dans notre tableau ça
  • 00:09:46
    commence du coup à cette ligne là et ça
  • 00:09:49
    se termine juste là pour commencer on va
  • 00:09:51
    de nouveau écrire une reggae avec un r e
  • 00:09:54
    dot comme piles et par la suite on va
  • 00:09:57
    créer la boucle on va garder la boucle
  • 00:09:58
    comme tel et on va faire un
  • 00:10:00
    IF Candy chaîne pour faire en sorte
  • 00:10:02
    d'identifier uniquement les prestations
  • 00:10:04
    et exclure tout le reste on va commencer
  • 00:10:06
    par créer notre rigueix pour la regex on
  • 00:10:10
    va être le plus précis possible je vous
  • 00:10:13
    expliquerai pourquoi dans un instant on
  • 00:10:14
    va l'appeler pressreux pour prestation
  • 00:10:16
    et ça va faire erreur Dotcom pile et on
  • 00:10:19
    va prendre les éléments les uns à la
  • 00:10:21
    suite des autres qu'est-ce qui pourrait
  • 00:10:22
    distinguer la description ce qu'on peut
  • 00:10:25
    dire pour commencer c'est que ça
  • 00:10:27
    commence par une majuscule par une
  • 00:10:30
    lettre capitale on va créer un groupe
  • 00:10:31
    donc un groupe pour dire ça c'est la
  • 00:10:34
    description
  • 00:10:35
    et ça commence par A à Z et on va mettre
  • 00:10:39
    un point plus pour dire qu'on veut
  • 00:10:41
    sélectionner l'entièreté de la
  • 00:10:42
    description et non pas seulement la
  • 00:10:44
    première lettre on ferme on ferme les
  • 00:10:46
    guillemets aussi et maintenant on va
  • 00:10:47
    mettre la condition
  • 00:10:48
    if donc on va dire
  • 00:10:51
    if
  • 00:10:52
    presque
  • 00:10:54
    d'autres search line si on la trouve
  • 00:10:57
    dans la ligne on va print la line
  • 00:11:02
    et là évidemment ça ne fait pas beaucoup
  • 00:11:03
    de différence donc on va continuer et on
  • 00:11:06
    va dire comment est-ce qu'on va
  • 00:11:07
    sélectionner la quantité et là déjà il y
  • 00:11:10
    a un élément distinctif c'est que la
  • 00:11:12
    quantité c'est un chiffre alors comme
  • 00:11:13
    beaucoup d'autres choses mais surtout il
  • 00:11:16
    y a un espace avant et il y a un espace
  • 00:11:18
    après ici un espace là il y a un espace
  • 00:11:20
    là pareil donc quantité c'est 3 et même
  • 00:11:23
    là si jamais on prend en compte 40 000
  • 00:11:25
    cellules vous voyez qu'il y a certes un
  • 00:11:26
    espace après mais il n'y a pas d'espace
  • 00:11:28
    avant parce qu'il y a directement le
  • 00:11:29
    signal inférieur on va dire qu'il y a un
  • 00:11:32
    backslash S et on va de nouveau refaire
  • 00:11:34
    un groupe ou cette fois-ci on va dire
  • 00:11:36
    bac/d back/d plus et on va réenchaîner
  • 00:11:39
    avec un back/s et si je refais la chose
  • 00:11:42
    vous voyez que là c'est déjà beaucoup
  • 00:11:43
    plus précis parce qu'on a les trois
  • 00:11:45
    extractions les trois prestations et on
  • 00:11:47
    a également la dernière ligne parce que
  • 00:11:48
    effectivement on a ce qui est considéré
  • 00:11:51
    comme étant la description et un espace
  • 00:11:53
    293 et un autre espace donc on va de
  • 00:11:57
    nouveau devoir être encore plus précis
  • 00:11:58
    et on va sélectionner le prix le prix
  • 00:12:01
    qu'il a devrait faire la différence
  • 00:12:03
    parce que on a plusieurs chiffres une
  • 00:12:06
    virgule deux chiffres et un signe euros
  • 00:12:09
    donc on va de nouveau faire un groupe
  • 00:12:10
    pour dire ça c'est le prix on enchaîne
  • 00:12:14
    en disant qu'on veut un chiffre qu'on
  • 00:12:15
    veut une virgule on va mettre un escape
  • 00:12:18
    caractère parce qu'une virgule c'est un
  • 00:12:20
    caractère spécial et on va dire qu'on
  • 00:12:22
    veut sélectionner deux chiffres et enfin
  • 00:12:24
    alors ça je l'exure mais ça se termine
  • 00:12:27
    par un signe euro et cette fois-ci c'est
  • 00:12:29
    impeccable on a les trois prestations on
  • 00:12:31
    ne reste plus qu'à enchaîner sur la
  • 00:12:32
    suite et à sélectionner le tarif final
  • 00:12:34
    alors ça je pense que je peux faire un
  • 00:12:36
    simple copier-coller par ailleurs donc
  • 00:12:37
    ça ce sera le prix final
  • 00:12:40
    parfait ça ne change pas notre condition
  • 00:12:42
    est vérifiée maintenant on va utiliser
  • 00:12:44
    tous les différents groupes que l'on a
  • 00:12:46
    créé pour dire ceci est la description
  • 00:12:48
    ceci est la quantité ceci est le prix
  • 00:12:51
    etc le principe reste donc le même on va
  • 00:12:54
    commencer par la description donc la
  • 00:12:55
    description ça part de presse search on
  • 00:13:00
    va chercher sur la ligne et non pas sur
  • 00:13:04
    le texte cette fois-ci et on va faire
  • 00:13:06
    point groupe 1
  • 00:13:09
    on va print la description pour savoir
  • 00:13:11
    si on n'a pas fait d'erreur et on
  • 00:13:13
    appelle bien la description workflow UPA
  • 00:13:15
    c'est extraction de données coaching
  • 00:13:16
    donc on a fait le search sur la ligne
  • 00:13:18
    tout simplement parce qu'on voulait
  • 00:13:19
    trois données il y avait trois
  • 00:13:20
    prestations différentes c'était donc
  • 00:13:22
    logique de faire de cette façon et on a
  • 00:13:24
    fait un groupe 1 et non pas un groupe 0
  • 00:13:25
    parce que le groupe 0 c'est l'entièreté
  • 00:13:28
    de notre reggaix et auquel cas on aurait
  • 00:13:30
    eu l'entièreté de la ligne une fois
  • 00:13:31
    qu'on sait ça on va pouvoir faire la
  • 00:13:34
    même chose la même chose pour la
  • 00:13:37
    quantité
  • 00:13:40
    donc search line cette fois-ci c'est le
  • 00:13:42
    groupe 2 celui-là
  • 00:13:45
    on va print la quantité
  • 00:13:48
    on a bel et bien la quantité et on a bel
  • 00:13:50
    et bien le prix impeccable maintenant on
  • 00:13:53
    va devoir enregistrer tout ça dans une
  • 00:13:55
    liste donc on va l'appeler item mais il
  • 00:13:58
    se trouve que il faut toujours garder à
  • 00:14:00
    l'esprit qu'à la fin on veut quand même
  • 00:14:01
    un tableau donc un tableau avec un nom
  • 00:14:03
    de colonne avec des noms de colonnes et
  • 00:14:06
    sa raison pour laquelle on va utiliser
  • 00:14:07
    une autre librairie qui s'appelle name
  • 00:14:10
    toppall alors je serais bien incapable
  • 00:14:11
    de vous l'expliquer exhaustivement parce
  • 00:14:13
    que c'est la première fois où l'une des
  • 00:14:15
    premières fois que je l'utilise
  • 00:14:16
    néanmoins un M top hall c'est un tube
  • 00:14:20
    qui est nommé
  • 00:14:24
    voilà voilà et c'est non ce seront du
  • 00:14:26
    coup les noms de nos colonnes on va
  • 00:14:28
    taper from collections
  • 00:14:31
    impols
  • 00:14:33
    et juste au dessus on va déjà
  • 00:14:36
    identifier notre tube notre name topper
  • 00:14:39
    donc on va le mettre dans une variable
  • 00:14:41
    qu'on va appeler presta on va faire name
  • 00:14:43
    to Paul et on va uniquement insérer deux
  • 00:14:45
    paramètres le premier paramètre c'est le
  • 00:14:47
    nom de notre tube et le deuxième
  • 00:14:49
    paramètre ce sera le nom de nos colonnes
  • 00:14:51
    les noms tels qu'on le souhaite à la fin
  • 00:14:53
    par exemple je veux commencer par la
  • 00:14:55
    date je mets un espace c'est une
  • 00:14:57
    nouvelle colonne la facture un espace
  • 00:14:58
    client pas une virgule un espace
  • 00:15:02
    description on avait la quantité
  • 00:15:06
    le prix et le prix total
  • 00:15:11
    et par la suite on revient tout en bas
  • 00:15:13
    et cette fois-ci on va taper
  • 00:15:16
    items d'autres happn et on va utiliser
  • 00:15:19
    notre variable presta que l'on vient de
  • 00:15:21
    créer et on va insérer entre parenthèses
  • 00:15:23
    chacune des variables que l'on a créé
  • 00:15:25
    jusqu'à présent donc on avait la date on
  • 00:15:27
    avait la facture on avait le client on
  • 00:15:31
    avait la description la quantité le prix
  • 00:15:34
    et le prix total et si on lance la chose
  • 00:15:38
    qu'on regarde dans notre liste parfait
  • 00:15:40
    vous voyez qu'on a trois éléments 1 2 et
  • 00:15:43
    3 qui a bel et bien les données
  • 00:15:45
    statiques les données qui ne changent
  • 00:15:46
    pas pour la date la facture et le client
  • 00:15:48
    c'est toujours la même chose en revanche
  • 00:15:50
    ce qui change les données dynamiques les
  • 00:15:52
    données des tableaux ce sont tout ce
  • 00:15:54
    qu'il y a à partir de la description
  • 00:15:55
    jusqu'au prix total à présent tout ce
  • 00:15:58
    qui reste à faire c'est d'utiliser la
  • 00:16:00
    librairie pandas que l'on va importer
  • 00:16:02
    tout de suite et de ce fait on sera
  • 00:16:04
    capable d'enregistrer les résultats dans
  • 00:16:07
    un fichier Excel on va du coup faire une
  • 00:16:09
    porte
  • 00:16:13
    et à présent on va créer un Data frame
  • 00:16:17
    qu'on va appeler dief speedidot data
  • 00:16:20
    frame sur notre liste qui s'appelle
  • 00:16:24
    items et si on regarde on a bel et bien
  • 00:16:26
    nos trois lignes il reste plus du coup
  • 00:16:29
    que de faire 10 tout Excel ou tout CSV
  • 00:16:34
    si vous souhaitez le mettre en CSV on va
  • 00:16:36
    l'enregistrer sous le nom facture
  • 00:16:40
    .xl X et je vais pas mettre l'index donc
  • 00:16:45
    je vais mettre l'index est égal à false
  • 00:16:47
    blindex c'est tout simplement cette
  • 00:16:48
    partie là et si on jette un œil sur
  • 00:16:50
    notre fichier excel on a bel et bien les
  • 00:16:53
    bonnes données c'est la fin de cette
  • 00:16:54
    vidéo j'espère que ça vous a plu alors
  • 00:16:56
    évidemment dans cet exemple on a extrait
  • 00:16:59
    qu'une seule facture mais après libre à
  • 00:17:01
    vous d'extraire toute votre liste de
  • 00:17:03
    factures et de l'insérer dans le même
  • 00:17:05
    fichier excel okay il faudra simplement
  • 00:17:08
    retravailler un petit peu le script
  • 00:17:10
    j'espère néanmoins que grâce à cette
  • 00:17:11
    vidéo vous avez maintenant une base
  • 00:17:13
    solide pour commencer si vous souhaitez
  • 00:17:15
    me soutenir et me suivre vous pouvez
  • 00:17:18
    rejoindre mon canal télégram vous
  • 00:17:19
    abonner et mettre un like sous cette
  • 00:17:21
    vidéo et si vous souhaitez que je vous
  • 00:17:23
    suive dans votre webtrapping vous pouvez
  • 00:17:25
    me contacter directement via cette
  • 00:17:27
    adresse email je vous dis à la prochaine
الوسوم
  • scraping
  • PDF
  • Python
  • factures
  • données statiques
  • données dynamiques
  • Pandas
  • PDFPlumber
  • CSV
  • Excel