Scrapper une liste d'exposant

Bonjour à tous,

Je suis nouveau sur ce site et quelle merveille !

Je tombe sur un hic. J’aimerais scrapper tous les nom + numéros de téléphone de cette liste d’exposant. D’habitude j’utilise une technique très rudimentaire à savoir prendre la réponse XHR et la convertir de JSON to CSV. Seulement, il y a 400 pages et je n’ai pas les numéros de téléphone.

SITE : Liste des exposants et marques Sirha Lyon 2023

Je ne souhaite pas qu’on pré-mache le travaille mais qu’on m’explique comment réussir à faire ça en bulk. Je précise que j’ai un Mac donc le logicile Zenno Poster ne fonctionne pas :confused:

Je vous remercie !

Salut à toi,

Alors une solution assez simple

Tu utilises le sitemap du site donc https://www.sirha-lyon.com/sitemap.xml très souvent, tu prends la base du site à laquelle tu rajoutes « /sitemap.xml »

Ensuite, c’est comme un rangement par tiroir
Dans le cas précis, tu as deux tiroirs, dans chacun, tu vas trouver la liste des URL des exposants.
CTRL A + CTRL C + EXCEL + CTRL V
Tu nettoies ton fichier pour avoir que les URL
Tu importes dans un nouveau projet dans le logiciel Octoparse (ou webscraper mais un peu plus chiant quand tu as plein d’URL comme ça) et tu extrais les données qui t’intéressent :slight_smile:

Je n’ai pas mis en pratique, mais ça devrait fonctionner

3 « J'aime »

Ou alors tu boucle juste sur la requête POST
https://www.sirha-lyon.com/fr/api/exhibitors
avec page de 1 à 431
tu obtiens directement des json comme celui-ci avec toutes les infos :

{"data":[{"id":"EBMS_13_117117_T05","exhibitor_name":"WWW.MADA-FS.COM","brand_label":" FRUIT RIDE","brand_type":"OWN","booth_code":"2.1B41","slug":"www-mada-fs-com-43436","nomenclatures":{},"categories":[],"tags":[],"exhibitor_logo_uri":"\/sites\/default\/files\/webgl_data_exhibitors_and_innovations\/exhibitors\/default-exhibitor-logo-kaki_0.png","has_company_phone":false},{"id":"EBMS_13_117425_T05","exhibitor_name":"GLATZ","brand_label":" PALAZZO STYLE","brand_type":"OWN","booth_code":"6E24","slug":"glatz-34593","nomenclatures":{},"categories":[],"tags":[],"exhibitor_logo_uri":"\/sites\/default\/files\/webgl_data_exhibitors_and_innovations\/exhibitors\/default-exhibitor-logo-kaki_0.png","has_company_phone":false},{"id":"EBMS_13_153058_T07","exhibitor_name":"SOLINEST ","brand_label":"(NA!) NATURE ADDICT","brand_type":"OWN","booth_code":"2.1D39","slug":"solinest-43468","nomenclatures":{},"categories":[],"tags":[],"exhibitor_logo_uri":"\/sites\/default\/files\/webgl_data_exhibitors_and_innovations\/exhibitors\/default-exhibitor-logo-kaki_0.png","has_company_phone":false},{"id":"EBMS_13_117287_T05","exhibitor_name":"LES SAVEURS DE LA DROME","brand_label":"100% DESSERT","brand_type":"OWN","booth_code":"2.1D59","slug":"les-saveurs-de-la-drome-43779","nomenclatures":{},"categories":[],"tags":[],"exhibitor_logo_uri":"\/sites\/default\/files\/webgl_data_exhibitors_and_innovations\/exhibitors\/default-exhibitor-logo-kaki_0.png","has_company_phone":false},{"id":"EBMS_13_143087_T06","exhibitor_name":"AGROMOUSQUETAIRES PROFESSIONNELS","brand_label":"2 CAPITAINES","brand_type":"OWN","booth_code":"3B116","slug":"agromousquetaires-professionnels-38237","nomenclatures":{},"categories":[],"tags":[],"exhibitor_logo_uri":"\/sites\/default\/files\/webgl_data_exhibitors_and_innovations\/exhibitors\/default-exhibitor-logo-kaki_0.png","has_company_phone":false},{"id":"EBMS_13_115066_T07","exhibitor_name":"LES DOMAINES JEEPER","brand_label":"20CUBE","brand_type":"OWN","booth_code":"6E94","slug":"les-domaines-jeeper-41682","nomenclatures":{},"categories":[],"tags":[],"exhibitor_logo_uri":"\/sites\/default\/files\/webgl_data_exhibitors_and_innovations\/exhibitors\/default-exhibitor-logo-kaki_0.png","has_company_phone":false},{"id":"13_166614","exhibitor_name":"21 DEGRES SUD","exhibitor_country_origin":"France","exhibitor_logo_uri":"https:\/\/exposant.gl-events.com\/uploads\/company_booths\/logos\/d3e92d9f8e06c40f8c4bd65bc2081872.png","booth_code":"6C99","exhibitor_customer_type":"EXH","slug":"21-degres-sud-49508","company_social_networks":["https:\/\/www.facebook.com\/21degressud","https:\/\/www.instagram.com\/21degressud\/"],"nomenclatures":{"Parcours de visite":{"Pour l\u0027\u00e9picerie fine et les cavistes":[]},"Activit\u00e9":{"Boissons alcoolis\u00e9es et non alcoolis\u00e9es":{"Spiritueux, liqueurs \u2026":[]}}},"categories":[],"tags":[],"has_company_phone":false},{"id":"13_153088","exhibitor_name":"2IMAHL","exhibitor_country_origin":"France","exhibitor_logo_uri":"https:\/\/exposant.gl-events.com\/uploads\/company_booths\/logos\/a2b4b674b39f07ad11656ef56f80e22a.jpg","booth_code":"6E25","exhibitor_customer_type":"EXH","slug":"2imahl-42589","company_social_networks":["https:\/\/www.facebook.com\/2imahl\/","https:\/\/twitter.com\/2imahl","https:\/\/fr.linkedin.com\/company\/2imahl","https:\/\/www.instagram.com\/2imahl\/"],"brand_name":["AMOBIS","EZPELETA","GAFIC","GROSFILLEX","NARDI"],"nomenclatures":{"Activit\u00e9":{"Equipement de salle indoor et outdoor":{"Mobilier et \u00e9quipement de chambre":[],"Mobilier et \u00e9quipement de salle":[],"Mobilier et \u00e9quipement de terrasse":[]}},"Pays \u00e0 l\u0027export":{"EUROPE":{"EUROPE OCCIDENTALE":{"SUISSE":[]}}}},"categories":[],"tags":[],"has_company_phone":false},{"id":"EBMS_13_117156_T05","exhibitor_name":"MAISON MARECHAL","brand_label":"3 R","brand_type":"OWN","booth_code":"2.2G132","slug":"maison-marechal-45033","nomenclatures":{},"categories":[],"tags":[],"exhibitor_logo_uri":"\/sites\/default\/files\/webgl_data_exhibitors_and_innovations\/exhibitors\/default-exhibitor-logo-kaki_0.png","has_company_phone":false},{"id":"13_164989","exhibitor_name":"3G PACKAGING","exhibitor_country_origin":"Italie","exhibitor_logo_uri":"https:\/\/exposant.gl-events.com\/uploads\/company_booths\/logos\/4884603d0984c36abdcb0844cc8b998e.png","booth_code":"G6B11","exhibitor_customer_type":"EXH","slug":"3g-packaging-46465","company_social_networks":["https:\/\/www.linkedin.com\/company\/3g-packaging-pack-and-label-solution\/","https:\/\/www.instagram.com\/3gpackaging\/"],"brand_name":["AMEDEI","BONCI","CANIPAROLI","CATINARI","LA MOLINA","LAVORATTI","MADI IT","SABATIRI","SOTTORERO","TA\u0027MILANO"],"nomenclatures":{"Activit\u00e9":{"Boulangerie, p\u00e2tisserie, confiserie":{"D\u00e9cors, emballages, consommables \u2026":[]}},"Parcours de visite":{"Eco responsabilit\u00e9":[],"Offres alternatives":[],"PAI et Produits non transform\u00e9s":[],"Pour l\u0027\u00e9picerie fine et les cavistes":[]},"Pays \u00e0 l\u0027export":{"AMERIQUE DU NORD":{"ETATS UNIS":[]},"EUROPE":{"EUROPE OCCIDENTALE":{"FRANCE":[],"SUISSE":[]}}}},"categories":[],"tags":[],"has_company_phone":false},{"id":"13_132397","exhibitor_name":"4CASH","exhibitor_country_origin":"Portugal","exhibitor_logo_uri":"https:\/\/exposant.gl-events.com\/uploads\/company_booths\/logos\/6c2810041bc037245b581b2a38a48b1f.png","booth_code":"7D19","exhibitor_customer_type":"EXH","slug":"4cash-42538","company_social_networks":["https:\/\/www.facebook.com\/alice4cash","https:\/\/www.youtube.com\/channel\/UCxo1PoVyiyjJTvTL0lY-ZSA","https:\/\/www.linkedin.com\/company\/4cash-managementsystems","https:\/\/www.instagram.com\/alice4cash"],"brand_name":["ALICE"],"nomenclatures":{"Activit\u00e9":{"Technologies":{"Caisses, consommables":[]}},"Parcours de visite":{"Food Tech":[],"Pour l\u0027\u00e9picerie fine et les cavistes":[],"Pour la GMS":[]},"Pays \u00e0 l\u0027export":{"EUROPE":{"EUROPE DU SUD":{"ESPAGNE":[]},"EUROPE OCCIDENTALE":{"FRANCE":[]}}}},"categories":[],"tags":[],"has_company_phone":false},{"id":"EBMS_13_114869_T05","exhibitor_name":"SUPERFOOD BEERS","brand_label":"5.G","brand_type":"OWN","booth_code":"2.1J20","slug":"superfood-beers-42957","nomenclatures":{},"categories":[],"tags":[],"exhibitor_logo_uri":"\/sites\/default\/files\/webgl_data_exhibitors_and_innovations\/exhibitors\/default-exhibitor-logo-kaki_0.png","has_company_phone":false}],"meta":{"total":5164,"per_page":12,"current_page":1,"last_page":431,"from":1,"to":12}}

Et ensuite tu récupéres les numéros de téléphone avec la requête du genre :

https://www.sirha-lyon.com/fr/api/exhibitors/www-mada-fs-com-43436/company-phone

et les bons headers…

je serais très curieux de connaitre un peu plus tes techniques afin de savoir comment tu fais pour mettre en place tout cela ?

Je te remercie pour tes explications en private et ton explication ici. Solution trouvée !

1 « J'aime »

dans le meme genre je souhaite scrapper la liste des exposants du salon retro mobile, /sitemap.xml ne fonctionne pas ici sauf erreur de ma part…

Merci pour votre aide

Tu peux passer par le moteur de recherche (géré par algolia)
Même principe que dans le post suivant :

Tu refais les requêtes POST

https://w1bghm6ujn-1.algolianet.com/1/indexes/*/queries?x-algolia-agent=Algolia%20for%20JavaScript%20(3.35.1)%3B%20Browser%3B%20instantsearch.js%20(3.7.0)%3B%20Vue%20(2.6.11)%3B%20Vue%20InstantSearch%20(2.6.0)%3B%20JS%20Helper%20(2.28.0)&x-algolia-application-id=W1BGHM6UJN&x-algolia-api-key=3e0a10941adfc229c087c3e903b4b6ba

avec les bons paramètres, et tu obtiens les données en json avec la même structure que dans le post suivant : le tableau hits contient ce que tu cherches.

Merci je vais tester :wink: