IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

récuperer info société par numéro tva


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 197
    Par défaut récuperer info société par numéro tva
    Bonjour

    On a une application douanière qui génère des pdfs dans un dossier.
    Ces pdfs ont un nom de la forme "numéroTVA_****.pdf"
    Je réalise une petite appli qui permettra d'envoyer ces documents à nos clients par mail.
    Une petite base de données s'impose avec le numéro tva, les infos sociétés (le nom), les emails.
    Jusqu'ici pas de soucis.

    Maintenant j'ai l'idée, afin d'éviter la saisie des infos de la société par la recherche de numéro de tva, de rechercher directement les infos par internet.
    J'ai trouvé un site qui me permet d'avoir ces infos : http://www.tva-intracommunautaire.co...567890&P4=&r=o en mettant le n° tva dans l'adresse.
    Comment puis je récupérer les infos (par quel module)?
    Connaissez vous une meilleure solution (autre site, JSON,..)?

    merci! :-)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Tu peux regarder du côté de mechanize : http://wwwsearch.sourceforge.net/mechanize/

    Avec un exemple :
    http://stockrt.github.io/p/emulating...ith-mechanize/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 197
    Par défaut
    mechanize... je vais aller voir ça

    sinon j'avais commencé un petit script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    import urllib2
     
     
    tva = 'FR60326300159'
    req = urllib2.Request('http://www.tva-intracommunautaire.com/Resultat.php?P1=%s&P4=&r=o' %tva )
    try:
       response  =urllib2.urlopen(req)
    except IOError, e:
      print e.code
    rep = response.read().splitlines()
     
    info = ''
    for r in rep:
      if 'id="dwwA11"' in r:
        info = r
        break
    print info
    en retour je récupère ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    </TABLE><DIV id="dwwA11" STYLE="position:absolute;left:6;top:48;width:393;height:139;z-index:1;"><table width=393 height=139><tr><td CLASS=Style1-150-iStyle-Gentle-Light valign=top id="tzA11">SA TELEVISION FRANCAISE 1<BR>1 QUAI POINT DU JOUR<BR>92100 BOULOGNE BILLANCOURT<BR><BR>Le num&eacute;ro FR60326300159 a &eacute;t&eacute; retourn&eacute; comme valide ce jour par les serveurs de l'Union Europ&eacute;enne. Vous pouvez toutefois demander ci-dessous &agrave; &ecirc;tre alert&eacute; par mail en cas de changement de situation.</td></tr></table></DIV><DIV id="dwwA20" STYLE="position:absolute;left:4;top:187;width:396;height:69;z-index:2;"><table id=A20>
    maintenant comment récupérer les infos..
    en cherchant je trouve le module Htmlparser, quelqu'un peut m'aider please pour extraire par exemple:
    SA TELEVISION FRANCAISE 1
    1 QUAI POINT DU JOUR
    92100 BOULOGNE BILLANCOURT

    merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 197
    Par défaut
    solution pas des plus élégantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    import urllib2
     
     
    tva = 'FR60326300159'
    req = urllib2.Request('http://www.tva-intracommunautaire.com/Resultat.php?P1=%s&P4=&r=o' %tva )
    try:
       response  =urllib2.urlopen(req)
    except IOError, e:
      print e.code
    rep = response.read().splitlines()
     
    info = ''
    for r in rep:
      if 'id="dwwA11"' in r:
        info = r
        break
    print info.split('<')[5].split('>')[1]
    ca marche, je récupère le nom de la société..

    suis preneur d'une meilleure solution!

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Essayes avec une regex.

    Ceci par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import re
     
    txt = """</TABLE><DIV id="dwwA11" STYLE="position:absolute;left:6;top:48;width:393;height:139;z-index:1;"><table width=393 height=139><tr><td CLASS=Style1-150-iStyle-Gentle-Light valign=top id="tzA11">SA TELEVISION FRANCAISE 1<BR>1 QUAI POINT DU JOUR<BR>92100 BOULOGNE BILLANCOURT<BR><BR>Le num&eacute;ro FR60326300159 a &eacute;t&eacute; retourn&eacute; comme valide ce jour par les serveurs de l'Union Europ&eacute;enne. Vous pouvez toutefois demander ci-dessous &agrave; &ecirc;tre alert&eacute; par mail en cas de changement de situation.</td></tr></table></DIV><DIV id="dwwA20" STYLE="position:absolute;left:4;top:187;width:396;height:69;z-index:2;"><table id=A20>"""
     
    RE = re.compile('(?<=<td CLASS=)(.*)(">)(.*?)(?=<BR><BR>)', re.DOTALL)
     
    match = RE.search(txt)
    print match.group(3)
    Il doit sûrement y avoir moyen de simplifier la regex, mais je me méfie quand le texte contient des guillemets ou divers symboles.


    Edit: J'ai retrouvé mon backslash ...

  6. #6
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Bonjour,
    @Nico_tournai: Je suis peut-être à coté de la plaque, mais avez-vous essayé tout simplement html.parser?

    En suivant juste l'exemple donnée dans la documentation?

    Après, juste un petit tri avec des regex comme le dit VinsS?
    (Peut-être même pas besoin vu qu'il s'agit d'un tableau et donc que les champs viennent dans l'ordre!)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    phr = """</TABLE><DIV id="dwwA11" STYLE="position:absolute;left:6;top:48;width:393;height:139;z-index:1;"><table width=393 height=139><tr><td CLASS=Style1-150-iStyle-Gentle-Light valign=top id="tzA11">SA TELEVISION FRANCAISE 1<BR>1 QUAI POINT DU JOUR<BR>92100 BOULOGNE BILLANCOURT<BR><BR>Le num&eacute;ro FR60326300159 a &eacute;t&eacute; retourn&eacute; comme valide ce jour par les serveurs de l'Union Europ&eacute;enne. Vous pouvez toutefois demander ci-dessous &agrave; &ecirc;tre alert&eacute; par mail en cas de changement de situation.</td></tr></table></DIV><DIV id="dwwA20" STYLE="position:absolute;left:4;top:187;width:396;height:69;z-index:2;"><table id=A20>"""
     
    class MyHTMLParser(HTMLParser):
        def handle_starttag(self, tag, attrs):
            print("Encountered a start tag:", tag)
        def handle_endtag(self, tag):
            print("Encountered an end tag :", tag)
        def handle_data(self, data):
            print("Encountered some data  :", data)
     
    parser = MyHTMLParser(strict=False)
    parser.feed(phr)
    (C'est directement recopié du code exemple de la page "html.parser")

    Clodion

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sécuriser l'intallation d'une application par numéro de séri
    Par dadamovic dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 05/11/2005, 21h59
  2. comment récupere des element par le nom de la balise?
    Par MASSAKA dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/08/2005, 19h59
  3. récuperer une info fourni par un exe
    Par peuf23 dans le forum Langage
    Réponses: 4
    Dernier message: 26/07/2005, 14h41
  4. [Math][Info]division par zéro
    Par niko8181 dans le forum Général Java
    Réponses: 9
    Dernier message: 23/05/2005, 09h58
  5. Gestion de l'évolution de ma base par numéro de version
    Par jackfirst72 dans le forum Outils
    Réponses: 4
    Dernier message: 16/03/2005, 13h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo