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

Shell et commandes GNU Discussion :

CURL, problème de contenu chargé en AJAX en scrollant


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Novembre 2015
    Messages : 49
    Par défaut CURL, problème de contenu chargé en AJAX en scrollant
    Bonsoir à tous. J'ai codé ceci qui m'a pris toute l'après midi (Je le mets, si un jour ça peut servir à quelqu'un). Comme expliqué dans les commentaire :
    1 - On parcours une page html catégorie qui contient des liens vers chaque produit. On récupère l'Url de chaque produit.
    2 - On explore le lien de chaque produit, à l'intérieur de ces produits, on récupère : La référence + Les images et on crée un csv (ref;img1,img2,imgN)


    Problème : Lors du parcours d'une page catégorie, celle-ci n'affiche, par défaut, que 9 produit. Le reste est chargé en scrollant (en Ajax ou Javascript je suppose).
    Comment faire fonctionne mon programme pour qu'il puisse aller récupérer ces informations chargées seulement en scrollant dans le navigateur ?

    J'ai pensé à la méthode de charger manuellement les produits dans mon navigateur, copier le code source dans un fichier et l'utiliser ensuite... Mais, j'aimerai savoir s'il existe un meilleur moyen.

    Bien à vous, merci.




    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    #! /bin/bash
     
    #Fonction qui récupère toutes les URL d'images, trie les doubles et garde les plus grandes, et la référence du produit.
    explore_sub_page() {
    	while read line
    	do 
    		if echo "$line" |grep '<div class="artnr"' >/dev/null 2>&1 #Si la ligne contient cette div (marqueur unique)
    			then
    			read line
    			line="${line%<*}" #On supprime la fin de la ligne
    			echo $line
    		fi
     
    		if echo "$line" | grep '<img srcset="' >/dev/null 2>&1 #Si la ligne contient cette balise (marqueur unique)
    			then
     
    			for word in $line; #on parcourt chaque mot de line 
    			do
    	       		if echo "$word" | grep -E 'srcset=.*web35_1800.*jpg"' >/dev/null 2>&1 #On prend que cette ligne
    					then 
    						prefix="=\""
    						word=${word#*"$prefix"} #on garde que l'url
    						word="${word%\"*}"
    						echo "$word"
    	       		elif echo "$word" | grep 'class="product-slider-wrapper' >/dev/null 2>&1 #Pour éviter les doublons de la page
    					then break
    				fi
        		done
    		fi
     
    	done < <(curl -s $1) #On passe le lien de chaque produit
    }
     
     
    #Ici on précupère le lien de chaque produit dans une page catégorie. Cependant, CURL n'a accès qu'à 9 produits, 
    # les autres produits sont chargés en AJAX...
    	while read line 
    	do 
    		if echo "$line" |grep 'class="detailInfo"' >/dev/null 2>&1
    			then
    			prefix="=\""
    			line=${line#*"$prefix"}
    			suffix="\""
    			line="${line%%"$suffix"*}"
     
    			explore_sub_page $line
    		fi
    	done < <(curl -s $1) #On donne l'Url de la catégorie, qui est une page qui contient les liens vers les fiches produits

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 652
    Par défaut
    Bonjour,

    quand je cherche "web scraping", je ne trouve pas de référence vers bash;
    parce que le shell n'est pas fait pour ça, et surtout pas pour interagir en javascript avec une page web.

    pour faire ça, il est préférable d'utiliser Python avec...
    heu, désolé, je n'en suis pas encore là; je passe la main.

    Le reste est chargé en scrollant (en Ajax ou Javascript je suppose).
    tu ne peux, évidemment, pas programmer, ni nous te conseiller, en "supposant".
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par N_BaH Voir le message
    le shell n'est pas fait pour ça
    bon, ça se fait très bien avec wget ou curl mais...

    tu ne peux, évidemment, pas programmer, ni nous te conseiller, en "supposant".
    ...oui, c'est surtout ça le problème en fait.

    il faut identifier les requêtes qui partent sur le réseau (à travers JS donc, via les outils de développement dans le navigateur par exemple, onglet réseau) et s'efforcer de les mimer au plus proche ensuite avec curl ou autre

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 652
    Par défaut
    exécuter du javascript avec curl, ou avec wget ? Si tu as des liens sur le sujet, je suis preneur.
    je n'ai rien réussi à faire remonter en stfw.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    exécuter du javascript avec curl, ou avec wget ?
    non non, je me suis peut-être mal exprimé, l'idée c'est plutôt de ne se focaliser que sur les effets de l'exécution du javascript, une fois le code JS exécuté il y a une requête qui part sur le réseau, on peut alors regarder comment elle est fichue et la reproduire voire anticiper les prochaines (genre ?page=1 ou ?from=50 etc.), c'est fastidieux (et en partie pour ça qu'on a inventé des trucs comme selenium) mais selon le cas ça peut s'avérer plus rentable que de dégainer l'artillerie lourde

  6. #6
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Novembre 2015
    Messages : 49
    Par défaut Merci
    Merci pour vos tentatives d'aide. J'pense que j'suis parti pour scroller les 50 pages, les enregistrer et executer mon .SH sur les page enregistrées avec le contenu téléchargé en scrollant manuellement. Si quelqu'un veut jeter un oeil et trouve une solution rapide, voilà un exemple de page :
    https://www.legler-online.com/fr/esp...ials/noel.html

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

Discussions similaires

  1. Contenu chargé via AJAX, script ne s'applique pas
    Par encoremoi21258 dans le forum AJAX
    Réponses: 17
    Dernier message: 11/05/2018, 08h41
  2. Réponses: 6
    Dernier message: 16/03/2014, 18h31
  3. [AJAX] Contenu chargé en AJAX
    Par kev484 dans le forum jQuery
    Réponses: 3
    Dernier message: 31/01/2013, 14h12
  4. [CSV] Problème d'encodage
    Par simoryl dans le forum Langage
    Réponses: 13
    Dernier message: 18/04/2012, 15h20
  5. Problème prise en charge XSL avec internet explorer 6
    Par Taildan dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 19/02/2006, 07h19

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