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 :

BeautifulSoup request.get html.parser


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien assistance informatique
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien assistance informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Par défaut BeautifulSoup request.get html.parser
    Bonjour à tous,

    Je viens de faire un script qui me permet de récupérer toutes les url partiel se trouvant sur un site puis de les recompilé avec ce qu'il manque pour avoir le lien au complet.
    Exemple, lorsque je lance mon script sur la page concernée, le résultat me retourne ceci :
    catalogue/category/livre_1/index.html"

    La suite de mon script me permet de combler ce qu'il manque > Résultat = {re.compile('https://mon_site.com/catalogue/category/livre_1/index.html')}

    J'aimerais savoir si c'est possible de récupérer juste l'url se trouvant dans mon résultat "https://mon_site.com/catalogue/category/livre_1/index.html" avec un fonction ou autre.

    J'ai fait beaucoup de recherche à ce sujet et je ne trouve pas de solution, pouvez vous m'aider SVP?

    Merci et au plaisir de vous lire

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Thunder13 Voir le message
    Je viens de faire un script qui me permet de récupérer...J'aimerais savoir si c'est possible de récupérer juste l'url se trouvant dans mon résultat "https://mon_site.com/catalogue/category/livre_1/index.html" avec un fonction ou autre.
    Rien compris. Tu as un truc qui te retourne l'URL complète et tu veux la récupérer? Mais puisque tu l'as déjà???!!!???

    Citation Envoyé par Thunder13 Voir le message
    J'ai fait beaucoup de recherche à ce sujet et je ne trouve pas de solution
    Un peu normal, internet ne contient que ce qui est écrit par d'autres et donc personne ne va écrire des trucs aussi triviaux que "comment récupérer dans une variable2 ce que l'on a déjà dans une variable1"...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien assistance informatique
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien assistance informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Par défaut Salut
    Bonjour et désolé si je me suis pas bien fait comprendre,

    Alors j'ai pas essayé mais je suppose que si j'importe le résultat dans un fichier csv, je risque de retrouver cette info {re.compile('https://mon_site.com/catalogue/category/livre_1, alors que moi je souhaite juste ça : https://mon_site.com/catalogue/category/livre_1

    Est ce possible d'extraire juste le lien qui se trouve dans mon résultat ?

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 322
    Par défaut
    bonjour
    Citation Envoyé par Thunder13 Voir le message
    Bonjour à tous,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Résultat = {re.compile('https://mon_site.com/catalogue/category/livre_1/index.html')}
    J'aimerais savoir si c'est possible de récupérer juste l'url se trouvant dans mon résultat "https://mon_site.com/catalogue/category/livre_1/index.html" avec un fonction ou autre.
    De même rien compris à la demande
    resultat = {re.compile()} c'est quoi ce code "bidon", il est normal qu'avec ce code tu ne puisses rien trouver dans "resultat"

    Je suppose que tu n'as rien compris au regex ? lire la doc est un plus...
    De plus tu parles de BeautifulSoup dans le titre et c'est pour au final faire un regex sur le code de la page ? pas compris


    EDIT
    Citation Envoyé par Thunder13 Voir le message
    Est ce possible d'extraire juste le lien qui se trouve dans mon résultat ?
    Tu ne nous dit pas ce qu'est "resultat", extraire une chaine d'un objet non connu, je ne sais pas faire

    si resultat est uniquement une simple chaine type "{re.compile('https://mon_site.com/catalogue/category/livre_1/index.html')}" ?
    alors , oui, tu peux utiliser un regex pour l'extraire, ou, si toujours de ce format ... un split(simple_quote)[1] peut aussi faire l'affaire
    Mais, puisque tu nous dis que c'est toi qui a créer cette chaine, c'est que tu avais déjà l'url, alors pourquoi l'extraire de la chaine plutôt que la récupérer directement en amont ???

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Thunder13 Voir le message
    Bonjour et désolé si je me suis pas bien fait comprendre,
    Pas grave, de la discussion jaillira la lumière. Mais quelque part je sens se profiler ici un problème XY...

    Citation Envoyé par Thunder13 Voir le message
    Alors j'ai pas essayé...
    Très mauvais départ. D'abord on essaye, ensuite on regarde ce qui se passe...

    Citation Envoyé par Thunder13 Voir le message
    mais je suppose que si j'importe le résultat dans un fichier csv, je risque de retrouver cette info {re.compile('https://mon_site.com/catalogue/category/livre_1, alors que moi je souhaite juste ça : https://mon_site.com/catalogue/category/livre_1
    Bah, comme papajoker je pense que tu n'as pas bien pigé les regex. Mais même si tu obtenais la string "{re.compile('https://mon_site.com/catalogue/category/livre_1'" ce n'est pas bien compliqué d'en extraire ce qui commence par "http". Suffit d'un petit str.find("http") mixé ensuite avec un slice...

    Citation Envoyé par Thunder13 Voir le message
    Est ce possible d'extraire juste le lien qui se trouve dans mon résultat ?
    Commence par regarder ce qu'est ton résultat. Tu fais print(mon_resultat, type(mon_resultat)) et ensuite tu analyses...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien assistance informatique
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien assistance informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Par défaut Re
    Voici mon code :
    Nom : mon_code1.png
Affichages : 467
Taille : 119,5 Ko


    Je suis allé vérifier dans mon fichier csv et cette ligne est bien présente : {re.compile('https://mon_site.com/catalogue/category/livre_1/index.html')}.

    Concernant cette info "Suffit d'un petit str.find("http") mixé ensuite avec un slice..." Je suis pas un expert et c'est pour cela que je viens vous demander de l'aide mais je suis preneur, comment je pourrais m'y prendre pour mettre cela en place (str.find(http") et le (slice ) ?

    Vraiment désolé de ne pas réussir à me faire comprendre, j'espère qu'avec le code en vu ça ira mieux

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 322
    Par défaut
    Non merci pour cette copie écran ! c'est si simple de copier le texte ici (encadré dans le balise "#(code)")

    Citation Envoyé par Thunder13 Voir le message
    Je suis pas un expert
    Ici, tout est faux (x erreurs à chaque ligne depuis 33), en fait tu n'as aucune notion python, un minimum est de lire un tuto avant de coder
    code illogique, indentation aléatoire…,

    mais, tu as bien ce problème XY : c'est en fait ton "résultat" qui n'a aucun sens

  8. #8
    Membre à l'essai
    Homme Profil pro
    Technicien assistance informatique
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien assistance informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Par défaut Re
    Je suis désolé je ne connais pas encore bien le site même si je suis inscrit depuis quelques années, je pensais avoir bien fait en ajoutant ma capture d'écran.

    J'ai commencé il y a tous juste une semaine sur Python donc j'imagine bien que pour vous c'est du grand n'importe quoi. J'essaye de mettre en place un code tant bien que mal et j'essaye surtout de trouver une solution à mon problème en trouvant des solutions sur le net ...

  9. #9
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Quand tu tapes un nouveau message, juste au-dessus de la zone de texte tu as le #.

    Clique dessus et copie/colle ton code à l'intérieur des balises CODE qui viennent de s'ajouter dans la zone de texte.

    Quant à trouver des solutions sur le net, as-tu au préalable suivi des tutos ?

    Suivre un tuto sur un sujet particulier, puis chercher des astuces sur le net pour mieux comprendre est une chose.
    Chercher une soluce sans avoir suivi le tuto rendra ton code difficilement maintenable et ça ne t'apportera rien de bénéfique sur le long terme.

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Thunder13 Voir le message
    Je suis allé vérifier dans mon fichier csv et cette ligne est bien présente : {re.compile('https://mon_site.com/catalogue/category/livre_1/index.html')}.
    Compris. Mais comme le dit papajoker, ici on poste ses codes. Ainsi on peut les récupérer pour les tester.

    Bon, voici mon analyse:
    En ligne 33 il est écrit resultat_url1={re.compile(un_truc)}. La syntaxe {...} exprime la création d'un ensemble (une espèce de liste d'éléments tous distincts). Cet ensemble récupère le résultat de re.compile(...) qui est un objet re.Pattern. Déjà là, n'importe qui, même un ultra débutant, pour peu qu'il réfléchisse un minimum, devrait naturellement en arriver à se demander si un ensemble de "un truc" est vraiment pertinent
    Ensuite resultat_url2 récupère une liste contenant la variable "resultat_url1". Même topo, une créer une liste de "un truc", ce truc étant lui-même un ensemble de "un truc"...
    Je sais pas moi, si on te disait "voici une liste de commissions" et que la liste contienne juste une seule ligne "acheter le pain", je pense que tu répondrais "ok pas besoin de liste, suffit de me dire d'acheter le pain" non? Et si la liste était elle-même dans une boite et qu'il faille ouvrir la boite pour accéder à la liste qui dit juste d'acheter le pain, tu ne penserais pas que celui qui a fait ça est bon à enfermer???

    Ensuite en ligne 41 tu inities une boucle sur la liste contenue dans "resultat_url2" (donc une boucle pour aller traiter un seul élément ) et tu écris dans le fichier l'élément traité, donc l'ensemble créé en ligne 33, cet ensemble étant écrit par Python comme il le peut, c'est à dire sous la notation "ensemble".
    Bref, voici un résumé succinct de ce que tu écris dans ton fichier (sans toutes ces variables intermédiaires qui me font penser à l'administration française)
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> a={re.compile("http://truc")}
    >>> type(a)
    <class 'set'>
    >>> str(a)
    "{re.compile('http://truc')}"
    >>>
    A partir de là je suis entièrement d'accord avec toi: ton fichier contient bien la string "{re.compile('http://truc')}" et pour en extraire juste la string "http://truc" il faut faire un traitement sur la string en question. Le traitement n'est franchement pas compliqué et n'importe qui ici te donnera 15 solutions différentes pour ça toutes aussi efficaces les unes que les autres.
    Ce que je dis en revanche, c'est que pour en être arrivé à avoir un fichier contenant non pas le résultat d'une action mais le nom de l'action elle-même, c'est que tu as sacrément merdé dès le départ et donc c'est sur ce départ qu'il faudrait travailler. Parce que là, tu pars droit dans le mur (tu tentes de soigner le symptôme, pas la cause). C'est comme si tu créais une fonction somme(x, y) qui renvoie la somme x+y (def somme(x, y): return x+y) mais que tu écrivais dans le fichier "somme(2, 3)" au lieu d'y écrire directement "5". Et ensuite tu viens ici demander comment transformer la chaine "somme(2, 3)" en valeur "5".
    Déjà deux questions immédiates
    • pourquoi utiliser re.compile() (dans quel but cette instruction)
    • pourquoi mettre ça dans un ensemble à un seul élément

    ???

    Citation Envoyé par Thunder13 Voir le message
    Vraiment désolé de ne pas réussir à me faire comprendre, j'espère qu'avec le code en vu ça ira mieux
    Ah oui, là on a tous pigé de quoi il s'agit.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Membre à l'essai
    Homme Profil pro
    Technicien assistance informatique
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien assistance informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Par défaut Re
    Bonjour Arioch.

    Je ne savais pas pour l'ajout du code mais maintenant je sais .

    Pour répondre à ta question, je suis en train de suivre des cours sur Python, dans les cours ils expliquent bien comment récupérer les données d'une page web donc jusque là c'est bon mais ils n'explique pas comment récupérer une url d'après un lien hypertexte, donc j'ai trouvé cette ligne sur internet qui me permet d'assembler la partie manquante de mon lien hypertexte.
    Sur internet j'ai trouvé des solutions pour faire un lien hypertexte d'après une url mais pas l'inverse ou alors je suis passé à coté sans m'en rendre compte.
    Enfin bref, je vais continuer.

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut
    Citation Envoyé par Thunder13 Voir le message
    Pour répondre à ta question, je suis en train de suivre des cours sur Python, dans les cours ils expliquent bien comment récupérer les données d'une page web donc jusque là c'est bon mais ils n'explique pas comment récupérer une url d'après un lien hypertexte, donc j'ai trouvé cette ligne sur internet qui me permet d'assembler la partie manquante de mon lien hypertexte.
    Si vous ne savez pas concaténer 2 chaines de caractères, le cours que vous êtes en train de suivre est bien "trop avancé". Essayez de revoir votre plan de progression car vous ne pouvez pas faire "compliqué" sans avoir appris à faire simple et là vous êtes juste en train de faire n'importe quoi (passer par un ensemble contenant une regexp pour concaténer 2 chaines de caractères? Ce n'est pas une incantation magique qu'il suffit de réciter mais des instructions que la machine devra exécuter pour obtenir un résultat.).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 322
    Par défaut
    Citation Envoyé par Thunder13 Voir le message
    ils n'explique pas comment récupérer une url d'après un lien hypertexte, donc j'ai trouvé cette ligne sur internet qui me permet d'assembler la partie manquante de mon lien hypertexte.
    Sur internet j'ai trouvé des solutions pour faire un lien hypertexte d'après une url mais pas l'inverse ou alors je suis passé à coté sans m'en rendre compte.
    Comment faire compliqué lorsque c'est simple
    Normal que tu ne trouves pas sur internet car ce que tu désires est le béaba : comme créer une chaine à partir de 2 chaines !

    Toi, tu fais:
    hypertexte = "/montruc/fichier.html"
    Transformer hypertexte en truc immonde
    ? forum developpez.net comment transformer mon truc immonde en (chaine) URL ???
    ---------
    "http://serveur.fr/" est une chaine, "hypertexte" est une chaine
    Citation Envoyé par Thunder13 Voir le message
    je suis passé à coté sans m'en rendre compte.
    ? comment créer une chaine "url" qui regroupe les 2 ?



    -----------
    Et je ne parle pas de la suite... fichier .csv
    - créer dans la boucle
    - enregistre pas l'url dans le fichier mais on la convertie en liste histoire de compliquer et de ne pas avoir ce que l'on désire

  14. #14
    Membre à l'essai
    Homme Profil pro
    Technicien assistance informatique
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien assistance informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Par défaut Re
    Merci pour les infos, je me suis peut être compliqué la vie en cherchant sur le net et à force de voir plein de chose j'en perd les pédales.

  15. #15
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Thunder13 Voir le message
    donc j'ai trouvé cette ligne sur internet qui me permet d'assembler la partie manquante de mon lien hypertexte.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # La ligne suivante permet d'assembler https://mon_site.com et catalogue/category/livre_1/index.html
    resultat_url1=attrs={re.compile(f"https://mon_site.com/{url_bs3}")}
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Les lignes suivantes permettent toutes d'assembler https://mon_site.com et catalogue/category/livre_1/index.html sans se prendre la tête
    url_bs3="catalogue/category/livre_1/index.html"
    resultat_url1="https://mon_site.com/" +  url_bs3
    resultat_url1="https://mon_site.com/%s" % url_bs3
    resultat_url1="https://mon_site.com/{0}".format(url_bs3)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/04/2007, 17h34
  2. [HTML] parser du HTML
    Par defdef dans le forum Web
    Réponses: 1
    Dernier message: 07/04/2007, 18h01
  3. Besoin d'un coup de main avec HTML::Parser
    Par mobscene dans le forum Modules
    Réponses: 1
    Dernier message: 09/12/2006, 15h49
  4. HTML Parser
    Par SkyDev dans le forum Web
    Réponses: 1
    Dernier message: 21/08/2006, 16h38
  5. Utilisation de HTML::Parser
    Par mobscene dans le forum Web
    Réponses: 6
    Dernier message: 27/10/2005, 13h57

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