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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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
    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]

  5. #5
    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

  6. #6
    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

  7. #7
    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]

  8. #8
    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 ???

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