Récupérer les emails d'une page web

CreaZo

Nouveau WRInaute
bonjour à tous,

Je souhaite récupérer les emails d'une page html, d'après mes recherches je peux utiliser ceci :
Code:
<?php
# Adresse du site à "exploiter"
$url = 'http://monsite.fr';	

# Récupération des emails
preg_match_all('`[a-zA-Z0-9_\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+`m', $file, $emails);
# Affichage du tableau
print_r($emails[0]);

Sauf que quand j'utilise ceci j'ai comme affichage : Array()

a priori les résultat sont dans un tableau, pour voir le contenu de ce tableau il faut que j'utilise la fonction var_dump ou print_r (comme dans mon exemple) puis mettre en place une boucle pour passer les éléments un à un.

Sauf que je n'y arrive pas... Quelqu'un me m'aider ou m'indiquer la voie à suivre ?
Merci !
 

CreaZo

Nouveau WRInaute
Du coup je dois le modifier mais comment ?

J'ai essayer ceci sans succés :

Code:
<?php
# Adresse du site à "exploiter"
$url = 'http://monsite.fr';   

# Récupération des emails
preg_match_all('`[a-zA-Z0-9_\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+`m', $url, $emails);
# Affichage du tableau
print_r($emails[0]);

Merci pour ton soutien ^^
 

mitchum

WRInaute discret
avec ton code ca marchera pas...
Par contre ca ca va marcher :
Code:
<?php
# Adresse du site à "exploiter"
$url = 'tonemail@jeveuxspammer.fr';   

# Récupération des emails
preg_match_all('`[a-zA-Z0-9_\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+`m', $url, $emails);
# Affichage du tableau
print_r($emails[0]);



(j'ai pas testé la regex...)

Par contre si tu veux vraiment recuperer du contenu d'une page web, ca sert a rien de mettre une url dans une variable sans rien faire derriere, la logique des choses voudrait que meme sans code on fasse :

- on choisit l'url a crawler
- on recupere le code html de cette url
- on parse le document pour trouver ce qu'on veux
- on stocke les resultats dans un tableau, fichier texte, bdd...

la ton code fait :
- on choisit l'url a crawler
- on parse le document pour trouver ce qu'on veux
- on stocke les resultats dans un tableau

il manque une étape...
 

CreaZo

Nouveau WRInaute
Merci pour votre aide.

Juste pour mettre au clair, c'est n'est pas pour du spam. Je gère une cinquantaine de mailing-list OVH au boulot je je dois les mettre régulièrement à jour en fonction de l’alimentation d'une base de données qu’alimentent mes collègues, bref une petite usine à gaz. En pratique récupère les mails de la BDD à la main via captain extractor, mais je préférais le faire en interne via un script maison d'où ma demande.

Bref voila ma problématique ^^

Pour revenir à mon code en mettant ceci

Code:
<?php
# Adresse du site à "exploiter"
$url = 'http://alveus.informationjeunesse.fr/Extern/WebContent/12953';   

# Récupération des emails
preg_match_all('`[a-zA-Z0-9_\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+`m', $url, $emails);
# Affichage du tableau
print_r($emails[0]);

J'ai de nouveau un tableau vide : Array ( )
Pourtant il y a bien des mails dans mon fichier html... Si j'ai bien compris je ne fais que stocker et pas d’impression écran ?

L'idéal serait d'avoir un fichier texte à la fin afin que je puisse le basculer à OVH par la suite !
 

mitchum

WRInaute discret
Code:
<?php
# Adresse du site à "exploiter"
$url = 'http://alveus.informationjeunesse.fr/Extern/WebContent/12953';   

$ch = curl_init();
$timeout = 10;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);



# Récupération des emails
preg_match_all('`[a-zA-Z0-9_\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+`m', $data, $emails);
# Affichage du tableau
print_r($emails[0]);

ca devrait être mieux je pense.

Sinon si tu as la bdd, pourquoi de pas faire un "select email from...." ??
 

CreaZo

Nouveau WRInaute
Merci cela fonctionne j'ai les mails, un peu de mise en page à faire et je serais bon (retirer les numéros de lignes par exemple)

J'aurais préférer récupérer les mails en direct mais ce n'est pas possible et encore ceci est une fiche relativement courte (Lozère), dans l’Aude je vais avoir un truc multiplier par beaucoup plus ^^

Merci encore à tous ! :) :)
 

CreaZo

Nouveau WRInaute
Merci, mais dans l'idée je veux échapper à ce genre d'extracteur automatisé ^^

Sinon mon code final représente ceci :

Code:
<html>
<head>
<title>Mail PIJ LOZERE</title>
</head><body>
<pre>
<?php
# Adresse du site à "exploiter"
$url = 'http://alveus.informationjeunesse.fr/Extern/WebContent/12953';   

$ch = curl_init();
$timeout = 10;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);



# Récupération des emails
preg_match_all('`[a-zA-Z0-9_\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+`m', $data, $emails);
# Affichage du tableau
print_r($emails[0]);


$JourSemaine = array("Monday" => "Lundi", "Tuesday" => "Mardi", "Wednesday" => "Mercredi", "Thursday" => "Jeudi", "Friday" => "Vendredi", "Saturday" => "Samedi", "Sunday" => "Dimanche") ;
echo implode(", ", $JourSemaine) ;
?>
</pre>
</body>
</html>

Cela me renvoie un tableau type :

Array
(
[0] => ino@crij-montpellier.com
...
[16] => casejols@wanadoo.fr
)

J'aimerais passer par la fonction suivante echo implode("<br> ", $emails) ; mais je n'ai plus rien avec celle-ci (le but étant d'avoir juste une liste avec retour à la ligne des mails)
 

Leonick

WRInaute accro
CreaZo a dit:
En pratique récupère les mails de la BDD à la main via captain extractor, mais je préférais le faire en interne via un script maison d'où ma demande.
euh, une requête directe à la bdd serait quand même plus efficace, plus rapide et, surtout, moins source d'erreurs
 

CreaZo

Nouveau WRInaute
Bizarrement cela ne marche pas ...

Pourtant que je passe ceci :
Code:
$JourSemaine = array("Monday" => "Lundi", "Tuesday" => "Mardi", "Wednesday" => "Mercredi", "Thursday" => "Jeudi", "Friday" => "Vendredi", "Saturday" => "Samedi", "Sunday" => "Dimanche") ;
echo implode("<br>", $JourSemaine) ;

Cela fonctionne

Mon code intégrale :
Code:
<html>
<head>
<title>Mail PIJ LOZERE</title>
</head><body>
<pre>
<?php
# Adresse du site à "exploiter"
$url = 'http://alveus.informationjeunesse.fr/Extern/WebContent/12953';   

$ch = curl_init();
$timeout = 10;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);



# Récupération des emails
preg_match_all('`[a-zA-Z0-9_\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+`m', $data, $emails);
# Affichage du tableau
implode("<br> ", $emails[0]);


$JourSemaine = array("Monday" => "Lundi", "Tuesday" => "Mardi", "Wednesday" => "Mercredi", "Thursday" => "Jeudi", "Friday" => "Vendredi", "Saturday" => "Samedi", "Sunday" => "Dimanche") ;
echo implode("<br>", $JourSemaine) ;
?>
</pre>
</body>
</html>
 

CreaZo

Nouveau WRInaute
Bon ben oui ... je suis un abruti... mauvaise relecture !

Problème résolu, merci à vous tous ! Je me retrouve bien avec ma liste de mails avec un retour à la ligne.

Bonne continuation à vous tous !
 

Discussions similaires

Haut