Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin d'un script simple de simple de lecture htm

    30 juin 2019 à 10:39:04

    Bonjour à tous. Je sais que mon message ne sera pas très populaire mais n'ayant pas fait de programmation depuis 5 ans, je n'sais plus du tout comment faire.

    Je voudrais simplement lire le code source d'une page et aligner une image, et un prix, dans un tableau. Déjà cela, je n'y arrive pas. Ensuite, je voudrais savoir si à partir de l'URL de l'image, je peux créer un fichier qui ne contient non pas l'URL, mais bien l'image elle-même. (Au pire je me dis je génère une page .HTML que je réaffiche via un tableau. Mais idéalement il faudrait que les URL ne soient pas dans le fichier...

    JE dois donc lire la variable après <img src=" et celle après : <span class="actual-price">&euro;

    LE tout dans un tableau... Et ce, pour éviter de faire ça manuellement pour 1000 produits... 

    Quelqu'un souhaiterait t-il m'aider ? Je sais que pour quelqu'un qui à l'habitude, c'est fait en 5 minutes... Mais moi en 40 minutes j'arrive à peine à lire et afficher un .txt avec la commande read... Je connais bien la mentalité anti assistanat des programmeurs et c'est légitime... Mais si quelqu'un peut me donner un squelette fonctionnel de code je serai très reconnaissant.
    • Partager sur Facebook
    • Partager sur Twitter
      30 juin 2019 à 17:40:08

      Bonjour,

      Tu dois l'écrire avec quel langage?

      Le résultat doit être un autre fichier HTML avec simplement les images et les prix dans un tableau?

      passio a écrit:

      Ensuite, je voudrais savoir si à partir de l'URL de l'image, je peux créer un fichier qui ne contient non pas l'URL, mais bien l'image elle-même.

      Tu peux télécharger les 1000 images, faut juste les stoker après :-°

      passio a écrit:

      Je connais bien la mentalité anti assistanat des programmeurs et c'est légitime...


      C'est sur qu'en commençant par dénigrer ceux qui peuvent t'aider, c'est pas la meilleure façon de demander de l'aide.
      • Partager sur Facebook
      • Partager sur Twitter
        1 juillet 2019 à 12:01:16

        Bonjour, je donne mon script si ça peut un jour servir, le grep est à adapter. Ce script visite toutes les ?pages=X, et à l'intérieur de ces pages, il ouvre tous les produits individuels via leur url avec un wget (commande CURL sur mon Mac). Il récupère ensuite toutes les images des produits et crée un tableau html avec les prix et références associés aux images. A la fin le .html s'ouvre, ne risque qu'à l'exporter en pdf directement depuis le navigateur.

        Lancement via :

        ./auto.sh 6 tmp.txt sortie.html https://www.sitedebijoux.com/cat/silver-pendants?page=



        auto.sh

        #! /bin/bash
        #$1 = Nombre de pages à visiter
        #$2 = fichier stockage code source (tmp.txt)
        #$3 = fichier de sortie final pour le tableau généré (sortie.html)
        #$4 = URL des pages à visiter sans le numero de page, exemple :https://www.site.com/category=2?page=
        
        clear
        
        i=0
        
        rm -rf $3
        ./param.sh $1 $2 $4
        
        echo -e "\033[31mRecherche et écriture des informations pour la création du tableau dans le fichier $3\033[0m"
        
        echo "<style>table {
          font-family: arial, sans-serif;
          
             margin-left:auto;
           margin-right:auto;
        }
        
        td, th {
          border: 1px solid #dddddd;
          padding: 8px;
        }
        
        tr:nth-child(even) {
          background-color: #dddddd;
        }
        
        </style>" >> $3
        echo "<table>" >> $3
        
        
        
        
        
        
        while read line
        do 
        
        	if echo "$line" |grep '"image"' >/dev/null 2>&1
        	then
        			
        			#img=$line
        			cp=$line
        			cp2="${cp%\"*}"
        			img="${cp2##\"*\"}"
        			#echo $img
        	fi
        
        
        	if echo "$line" |grep '"sku"' >/dev/null 2>&1
        	then
        			
        			#img=$line
        			cp=$line
        			cp2="${cp%\"*}"
        			ref="${cp2##\"*\"}"
        			#echo $img
        
        
        	fi
        
        		if echo "$line" |grep '"url"' >/dev/null 2>&1
        	then
        			
        			#img=$line
        			cp=$line
        			cp2="${cp%\"*}"
        			url="${cp2##\"*\"}"
        
        
        	fi
        
        
        	if echo "$line" |grep "\"price\": \"" >/dev/null 2>&1
        	then
        
        	 	#f="${line#<*;}"
        	 	#price="${f%<*}"
        	 		cp=$line
        			cp2="${cp%\"*}"
        			price="${cp2##\"*\"}"
        
        	 
        
        	 	
        	 	echo "$ref - $price - $img"
        	 	echo "$url"
        	 
        
        	echo "<tr><th>" >> $3
        	 	 #echo '	<th><img src="'"$img"'"'
        	 	 ./explorer.sh filetmp.txt $url $3
        	 	 echo "</th>
        	 	 		<th>RE-$ref</th>
        	 	 		<th>">> $3
        
        	 	 echo "($price*1.8)" | bc >> $3
        	 	 echo "</th>" >> $3
        	echo "</tr>" >> $3
        
        	 fi
        
        
        done < $2
        
        echo "</table>" >> $3
        
        echo -e "\033[31mTerminé, ouverture de $3\033[0m"
        
        open $3

        param.sh
          #!/bin/bash 
        
                 #$1 = Nombre de pages (?page=$1)
                 #$2 = Nom du fichier stockage code source.
                 #$3 = URL du code source à explorer.
                 echo "Suppression du fichier $2"
                 rm -rf $2
        
        
            
                 COUNTER=1
                 while [  $COUNTER -le $1 ]; do
                     echo -e "\033[31mAjout du code source de la page $3$COUNTER au fichier $2\033[0m"
                     curl "$3$COUNTER" >> $2
                     let COUNTER=COUNTER+1 
                 done
        

        explorer.sh
         #! /bin/bash
          #$1 = Nom du fichier stockage code source.
          #$2 = URL du code source à explorer.
          #$3 = fichier où ajouter les images
        
        echo "Suppression du fichier $1"
        rm -rf $1
        
        curl "$2" >> $1
        
        
         while read line
        do 
        	
        
        	if echo "$line" |grep '<a href="/uploads/dossiermarqueurpourtrouverlesbonneslignesàselectionner' >/dev/null 2>&1
        	then
        
        			cp=$line
        			ref="${cp#<*\/}"
        			cp2="${ref%%\"*}"
        
        	echo "$cp2"
        	echo '<img src="https://dossiermarqueurpourtrouverlesbonneslignesàselectionner'/'"$cp2"'" width="44%" >' >> $3
        fi done < $1

        Resultat :

        -
        Edité par passio 1 juillet 2019 à 12:12:34

        • Partager sur Facebook
        • Partager sur Twitter
          1 juillet 2019 à 19:45:09

          Bonjour,

          Bravo! Avec un peu d'huile de coude on arrive toujours à ce qu'on veut :)

          Ton script peut-être amélioré en plusieurs points:

          • while read line; do 
            # place la ligne lue dans la variable line
            # on aurait pu appeler cette variable n'importe comment, 
            # mais line est le plus évident.
                echo $line; # on utilise directement la variable
            done
            
            Je précise que cp est un mauvais choix de nom de variable car c'est une commande de coreutils.
          • L'utilisation de fichier temporaire alourdi le script, le sortie standard de curl peut directement être passée la boucle while:
            while read line; do
                echo line
            done < <(curl -s URLs)
          • Le script param.sh est inutile en soit car curl est capable d'incrémenter des nombres dans une URL directement, et donc tout ce script se résume en une simple commande.
            Extrait du manuel:
            Url
            The URL syntax is protocol-dependent. You'll find a detailed description in RFC 3986.
            
            You can specify multiple URLs or parts of URLs by writing part sets within braces as in:
            
            http://site.{one,two,three}.com
            
            or you can get sequences of alphanumeric series by using [] as in:
            
            ftp://ftp.numericals.com/file[1-100].txt
            ftp://ftp.numericals.com/file[001-100].txt (with leading zeros)
            ftp://ftp.letters.com/file[a-z].txt
            
            No nesting of the sequences is supported at the moment, but you can use several ones next to each other:
            
            http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
            
            You can specify any amount of URLs on the command line. They will be fetched in a sequential manner in the specified order.
            
            Since curl 7.15.1 you can also specify a step counter for the ranges, so that you can get every Nth number or letter:
            
            http://www.numericals.com/file[1-100:10].txt
            http://www.letters.com/file[a-z:2].txt

            Ce qui veut même dire que le script n'a plus besoin de connaître le nombre de page à visiter.

          • rm -rf est à bannir. C'est DANGEREUX. Une erreur (voir pire un acte malvaillant) dans le paramètre du script et tu peux par inadvertance supprimé des données importantes ou rendre instable ton système. D'ailleurs pourquoi l'argument -r? C'est un fichier à supprimer! Pourquoi l'argument -f? Si tu ne peux pas le supprimer sans forcer, c'est qu'il y a une bonne raison, et il vaut mieux regarder ça de plus près plutôt que de faire le bourrin.
          • Il faut préférer utiliser des fonctions plutôt que de séparer chaque fonctionnalité dans des fichiers séparés.
          • De manière globale, ton script ne fait aucune vérification sur les données rentrées par l'utiliisateur, ni sur les éventuelles erreurs qui peuvent apparaître. Il manque aussi beaucoup de commentaire (sera tu capables de comprendre en 1 lecture le fonctionnement de ton script dans 1 mois? 6 mois? 1 an?)
          Je ne me suis pas attardé sur le côté HTML et parsing, certains verront probablement des améliorations à apporter en plus d'autres conseils sur le reste.

          -
          Edité par KoaTao 1 juillet 2019 à 21:27:18

          • Partager sur Facebook
          • Partager sur Twitter
            2 juillet 2019 à 8:29:44

            Bonjour, merci pour ces conseils ! Effectivement, sur une catégorie de 24 pages, j'ai lancé le script le soir et il s'est terminé 30 minutes après mon réveil le lendemain ^_^ Je vais profiter de toutes ces recommandations pour l'améliorer. C'est sympa d'avoir passé du temps.
            • Partager sur Facebook
            • Partager sur Twitter

            Besoin d'un script simple de simple de lecture htm

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown