Scrap Mail depuis fiche et plusieurs page

Bonjour à tous, :vulcan_salute:

Je souhaite depuis ce site : https://repertoire.fntv.fr/adherent/search/list
Obtenir les mails des différentes fiches.
Les fiches se déclinent ensuite comme cela : https://repertoire.fntv.fr/adherent/NUMERO
Un petit coup de pouce ?

Merci par avance, :slight_smile:

Bonjour,

Tu peux utiliser webscraper.io, cette extension Chrome peut naviguer seule sur les pages, cliquer sur les boutons et copier les infos de l’entreprise dans un fichier que tu pourras ensuite coller/exporter là où tu veux.
La fonctionnalité de prise compte du changement de page est un peu fastidieuse à mettre en place, mais ils ont de bons tutos sur le site.
Il y a d’autres webscraper, mais celui que je t’ai donné est gratuit dans mes souvenirs,

Voilà !

Salut,

si tu veux j’ai adapté un script python que j’avais fait pour un autre site avec un fonctionnement similaire à celui de ton site: le voilà:

-- coding: utf-8 --

import urllib
from urllib import request
import re
import csv
profil=36

csvData = [[‹ Entreprise ›,‹ Nom contact ›,‹ Email ›]]

with open(‹ monfichier.csv ›, ‹ w ›, newline=‹  ›) as csvFile:
writer = csv.writer(csvFile)
writer.writerows(csvData)

csvFile.close()

while profil<1400:

begin_balise = '<b>'
end_balise = '</b>'
motif = begin_balise + '.*' + end_balise
urlmax="https://repertoire.fntv.fr/adherent/"+str(profil)


try:
    reqmax = request.urlopen(urlmax).read()
    reqmax = reqmax.decode('utf-8')
except urllib.error.HTTPError:
    reqmax='aaaaaaa'

reqnom = reqmax
reqnum = reqmax
obj_regex = re.search(motif, reqmax)
    
if obj_regex is None:
    print("Pas d'entreprise associé à cet ID")
    reqmax=''
else:
    reqmax = obj_regex.group()
    reqmax = reqmax.replace(begin_balise, '')
    reqmax = reqmax.replace(end_balise, '')
    reqmax = reqmax.strip()
    reqmax = reqmax.replace('&#039;', "'")
    reqmax = reqmax.replace('&amp;', "&")
    reqmax = reqmax.replace('&quot;', '"')
    print("Nom de l'entreprise",reqmax,)

    


begin_balise = 'Contact :'
end_balise = '<br>'
motif = begin_balise + '.*' + end_balise
obj_regex = re.search(motif, reqnom)

if obj_regex is None:
    print("Pas de nom associé à ce compte")
    reqnom=''
else:
    reqnom = obj_regex.group()
    reqnom = reqnom.replace(begin_balise, '')
    reqnom = reqnom.replace(end_balise, '')
    reqnom = reqnom.strip()
    reqnom = reqnom.replace('?', "é")
    print("Nom contact",reqnom,)

begin_balise = '<a href="mailto:'
end_balise = '">'
motif = begin_balise + '.*' + end_balise
obj_regex = re.search(motif, reqnum)

if obj_regex is None:
    print("Pas d'email")
    reqnum=''
else:
    reqnum = obj_regex.group()
    reqnum = reqnum.replace(begin_balise, '')
    reqnum = reqnum.replace(end_balise, '')
    reqnum = reqnum.strip()
    reqnum = reqnum.replace('</span> <em>(', '')
    print("email",reqnum,)

if reqmax != '':
    with open('monfichier.csv', 'a',  newline='') as newFile:
        newFileWriter = csv.writer(newFile)
        newFileWriter.writerow([reqmax,reqnom,reqnum])
            

            
profil += 1

Ça te donne un fichier csv avec comme séparateur des virgules. Et avec comme données le nom de l’entreprise, le nom du contact et son email si elle est référencée

1 « J'aime »

Bonsoir,

non créer un nouveau fichier (file puis new file) puis tu le lances en faisant F5, là il va te demander de le sauvegarder tu le sauvegarde où tu veux mais le fichier csv va apparaitre dans le dossier où se trouve le script. Quand la sauvegarde sera effectué le script va se lancer dans la console quand tu auras ça:
image
avec les 3 petites flèches le script aura fini

Si tu as d’autre questions n’hésites pas

Utilise https://octoparse.com en 5 minutes tu auras ce que tu veux :slight_smile:
Sinon contact moi en MP

On a géré et cloturé ça Vendredi dernier, merci pour les suggestions !

@bbjaune, 5min quand tu maîtrises l’outil je n’en doute pas, mais tu quantifierais la courbe d’apprentissage et prise en main d’Octoparse à combien?

1 « J'aime »

En effet c’est réglé !
Merci @ScrapingExpert :wink:
… et les autres pour les suggestions !

1 « J'aime »

Franchement très courte, Octoparse se prend en main en même pas 2 heures et ne requière aucune connaissance en code, c’est que du visuel et c’est vraiment pensé pour être simple :slight_smile:

Après connaître un peu de Xpath te permet de faire des choses plus complexe mais perso j’ai déjà fait des scraps complexes et volumineux avec Octoparse en quelques minutes (j’ai même découvert depuis peu la possibilité de changer d’ip automatiquement sans aucune manip particulière).

@ScrapingExpert je t’invite vraiment à tester leur version gratuite !

1 « J'aime »

Je prêcherais pour ma paroisse en te disant que je ne préfère pas encourager ce genre de solution , qui me mettrais au chômage :cry::joy:

Mais c’est toujours bon à connaitre !

1 « J'aime »

Bonjour @bbjaune ,

J’ai installé Octoparse il y a quelques jours et ça semble en effet vraiment pas mal.

Aurais-tu des suggestions à faire pour des forums/blogs pour mieux maitriser le xpath ?

Je bloque déjà sur du scrapping google map (malgré le tuto)… avec une erreur provenant apparemment du xpath :
au niveau du « loop item »

"cannot find any element using this xpath expression : « //DIV[@class=‹ section-layout section-scrollbox scrollable-y scrollable-show section-layout-flex-vertical section-layout-inset-shadow ›]/DIV[1]/DIV[1]/A[1] »

Un peu frustrant de bloquer si rapidement ^^