Récupérer des données depuis source non fixe

Fermé
formacity Messages postés 2 Date d'inscription jeudi 16 avril 2020 Statut Membre Dernière intervention 16 avril 2020 - Modifié le 16 avril 2020 à 22:46
formacity Messages postés 2 Date d'inscription jeudi 16 avril 2020 Statut Membre Dernière intervention 16 avril 2020 - 16 avril 2020 à 22:15
Bonjour, à tous,

Voici ci-dessous un script qui génère une lettre d'augmentation de l'indice de loyer basé sur le tableau de l'INSEE
Le but étant d'automatiser, et la problématique est que je ne trouve pas de data avec un url fixe permettant de récupérer les données type json, xml ou autre format web exploitable
Les données publiques sont inscrites dans un fichier csv ou xls
Dans ces circonstance, j'utilise la fonction curl ou la librairie simple_html_dom permettant de scrapper la ligne souhaitée.
La 2nde problématique est que le lien de ce tableau changera chaque année
pour 2019 --> https://www.insee.fr/fr/statistiques/3975845
pour 2020 --> https://www.insee.fr/fr/statistiques/4478590

Existerait-il une source dont le lien serait figé ?
Sinon un script plus poussé capable de trouver le lien correspondant au tableau actualisé ?
                <?php
                 /*
                $curl = curl_init();
                $url = "https://www.insee.fr/fr/statistiques/3975845";                
                curl_setopt($curl, CURLOPT_URL, $url);
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                
                $result = curl_exec($curl);
                preg_match_all("!<th class=\"ligne \" scope=\"row\">[^\s]*?</th>!", $result, $matches);
                                
                print_r($matches);

                for($i=0; $i < count($matches); $i++)
                {
                    echo $matches[0][$i].'<br/>';
                }
                curl_close($curl);


*/
                $n_actif = date('Y');
                $trim_actif = date('n');
                $ref_actif = $n_actif.' T'.$trim_actif;
                
                $n_1 = $n_actif-1;
                
                $html = new simple_html_dom();
                $html = file_get_html('https://www.insee.fr/fr/statistiques/4478590');
                $ligne1 = $html->find('#produit-tableau-figure1 th.ligne');
                $ligne2 = $html->find('td.nombre[1]');
// Find all images     
for($i=0; $i<sizeof($ligne1); $i++){        
       if($n_1==$ligne1[$i]->plaintext) { echo ' Période concernée --> '; }
         echo $ligne1[$i]->plaintext . ' --> '; 
         echo $ligne2[$i]->plaintext . '<br/>';
}                
                ?>      



EDIT : Ajout des balises de code
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


Merci par avance
Laurent
Configuration: Windows / Chrome 80.0.3987.163

1 réponse

Bonsoir,

Existerait-il une source dont le lien serait figé ?

Probablement du côté d'un flux RSS:
https://www.insee.fr/fr/information/2381941

Sinon un script plus poussé capable de trouver le lien correspondant au tableau actualisé ?

A part en l'indiquant manuellement et donc en tenant compte de l'adresse du lien dans votre système d'information rien de permet de deviner l'avenir et la future URL qui n'existe pas encore...donc il faudrait qu'il soit poussé au point d'avoir des talents paranormaux votre script.
0
formacity Messages postés 2 Date d'inscription jeudi 16 avril 2020 Statut Membre Dernière intervention 16 avril 2020
16 avril 2020 à 22:15
Merci pour votre réponse Amaya

Même du côté RSS, c'est un véritable casse-tête, dans le RSS le seul lien qui concerne ma recherche
https://bdm.insee.fr/series/sdmx/rss/donnees renvoi vers une page listant une série chronologique

Quand je parlais d'une autre source, je pensais à d'autre site qui éventuellement aurait un tableau à jour sans prise de tête

Et quand je parlais de script plus poussé, je pensais à une recherche depuis le flux ou une autre source,
mais je pense que c'est jouable :
depuis le flux --> recherche sur mot clé dans le titre, puis le grid concerné, puis si le site est bien fait, encore --> sur mot clé puis le lien, pour enfin faire une dernière recherche dans le tableau à jour

Si je dois faire un script qui scrute dans tous les sens, je ne sais pas si ça va être efficace à terme
étant que la fréquence du script est annuelle
0