Web scrping
gunslinger
-
gunslinger1 -
gunslinger1 -
Bonjour,
Voila j'aimerai faire du web scraping. Pour ceux qui ne saurai pas ce que c'est j'explique je voudrai automatisé des remplissage de formulaire a partir d'une autre page en php.
Pour y parvenir j'utilise la librairie curl mais sa ne fonctionne pas la requete post que j'effectue n'est pas considérer comme la validation du formulaire. Je récupère un message comme quoi je n'ai pas donnée le bon code client.
Est-ce que quelqu'un serais pourquoi sa ne fonctionne pas ? Et surtout comment je pourrai y parvenir ?
Je fais pour récupéré des stats que je traite et que j'affiche après tout est gratuit donc je ne pense pas que de ce coter il y est des problèmes.
Merci beaucoup pour votre aide.
Voila j'aimerai faire du web scraping. Pour ceux qui ne saurai pas ce que c'est j'explique je voudrai automatisé des remplissage de formulaire a partir d'une autre page en php.
Pour y parvenir j'utilise la librairie curl mais sa ne fonctionne pas la requete post que j'effectue n'est pas considérer comme la validation du formulaire. Je récupère un message comme quoi je n'ai pas donnée le bon code client.
Est-ce que quelqu'un serais pourquoi sa ne fonctionne pas ? Et surtout comment je pourrai y parvenir ?
Je fais pour récupéré des stats que je traite et que j'affiche après tout est gratuit donc je ne pense pas que de ce coter il y est des problèmes.
Merci beaucoup pour votre aide.
A voir également:
- Web scrping
- Web office - Guide
- Navigateur web - Guide
- Création site web - Guide
- K9 web protection - Télécharger - Contrôle parental
- Adresse web exemple - Guide
4 réponses
Peut-être avec Perl et HTTP::Recorder qui est un proxy qui te permet d'enregistrer des sessions puis d'en créer des scripts utilisables par le module WWW::Mechanize (qui visite les sites tout seul, mécaniquement)
https://www.perl.com/pub/2004/06/04/recorder.html/
https://www.perl.com/pub/2004/06/04/recorder.html/
je vien de trouver ce qui n'allais pas avec mon referer il manquait \r\n a la fin et maintenant j'obtien
ce message :
Length Required
c tu pourquoi ???
Merci
ce message :
Length Required
c tu pourquoi ???
Merci
je vien de trouver ce qui n'allais pas avec mon referer il manquait \r\n a la fin et maintenant j'obtien
ce message :
Length Required
c tu pourquoi ???
Merci
ce message :
Length Required
c tu pourquoi ???
Merci
voila la partie de mon code qui ne fonctionne pas
$postfields = array(); // les données a envoyer
$header = array();
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
$header[] = "Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
$header[] = "Accept-Encoding: gzip,deflate\r\n";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n";
$header[] = "Keep-Alive: 300\r\n";
$header[] = "Connection: keep-alive\r\n";
$header[] = "Content-Length: 400\r\n";
//url de la page de soumission
$url = "http://www....";
$useragent = "Mozilla/5.0";
$referer = "http://www....\r\n";
//Initialise une session CURL
$ch = curl_init($url);
//CURL options
//on défini les entetes de la requete http
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
//On poste les données du tableau $postfields
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
//On définit un useragent ici Mozilla/5.0
//souvent les bots se font passés pour googlebot ce qui finalement est stupide
//On passe donc un useragent banal
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
//On passe un referrer ici on passe la même page $url
curl_setopt($ch, CURLOPT_REFERER, $referer);
//on récupère le contenu de la page de résultat de la soumission dans une chaine
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//Page de résultats et fermeture de session
$result = curl_exec($ch);
curl_close($ch);
//on peut faire un echo du résultat obtenu
echo $result;
$postfields = array(); // les données a envoyer
$header = array();
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
$header[] = "Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
$header[] = "Accept-Encoding: gzip,deflate\r\n";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n";
$header[] = "Keep-Alive: 300\r\n";
$header[] = "Connection: keep-alive\r\n";
$header[] = "Content-Length: 400\r\n";
//url de la page de soumission
$url = "http://www....";
$useragent = "Mozilla/5.0";
$referer = "http://www....\r\n";
//Initialise une session CURL
$ch = curl_init($url);
//CURL options
//on défini les entetes de la requete http
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
//On poste les données du tableau $postfields
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
//On définit un useragent ici Mozilla/5.0
//souvent les bots se font passés pour googlebot ce qui finalement est stupide
//On passe donc un useragent banal
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
//On passe un referrer ici on passe la même page $url
curl_setopt($ch, CURLOPT_REFERER, $referer);
//on récupère le contenu de la page de résultat de la soumission dans une chaine
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//Page de résultats et fermeture de session
$result = curl_exec($ch);
curl_close($ch);
//on peut faire un echo du résultat obtenu
echo $result;
Apparemment, il ne faut jamais mettre \r\n dans les headers.
J'ai essayer mon code sans les \r\n mais sa ne change rien voici mon code sans :
$postfields = array(); // les données a envoyer
$header = array();
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3";
$header[] = "Accept-Encoding: gzip,deflate";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Keep-Alive: 300";
$header[] = "Connection: keep-alive";
$header[] = "Content-Length: 400";
//url de la page de soumission
$url = "http://www....";
$useragent = "Mozilla/5.0";
$referer = "http://www....\r\n";
//Initialise une session CURL
$ch = curl_init($url);
//CURL options
//on défini les entetes de la requete http
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
//On poste les données du tableau $postfields
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
//On définit un useragent ici Mozilla/5.0
//souvent les bots se font passés pour googlebot ce qui finalement est stupide
//On passe donc un useragent banal
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
//On passe un referrer ici on passe la même page $url
curl_setopt($ch, CURLOPT_REFERER, $referer);
//on récupère le contenu de la page de résultat de la soumission dans une chaine
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//Page de résultats et fermeture de session
$result = curl_exec($ch);
curl_close($ch);
//on peut faire un echo du résultat obtenu
echo $result;
si je les m pas sur mon referer sa ne fonctionne pas.
le content-lenght c pour spécifié la longueur de la requete envoyer car mon erreur maintenant c sa
Merci
$postfields = array(); // les données a envoyer
$header = array();
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3";
$header[] = "Accept-Encoding: gzip,deflate";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Keep-Alive: 300";
$header[] = "Connection: keep-alive";
$header[] = "Content-Length: 400";
//url de la page de soumission
$url = "http://www....";
$useragent = "Mozilla/5.0";
$referer = "http://www....\r\n";
//Initialise une session CURL
$ch = curl_init($url);
//CURL options
//on défini les entetes de la requete http
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
//On poste les données du tableau $postfields
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
//On définit un useragent ici Mozilla/5.0
//souvent les bots se font passés pour googlebot ce qui finalement est stupide
//On passe donc un useragent banal
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
//On passe un referrer ici on passe la même page $url
curl_setopt($ch, CURLOPT_REFERER, $referer);
//on récupère le contenu de la page de résultat de la soumission dans une chaine
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//Page de résultats et fermeture de session
$result = curl_exec($ch);
curl_close($ch);
//on peut faire un echo du résultat obtenu
echo $result;
si je les m pas sur mon referer sa ne fonctionne pas.
le content-lenght c pour spécifié la longueur de la requete envoyer car mon erreur maintenant c sa
Merci
Juste pour savoir tu ne conneterai pas un moyen de valider un formulaire html comme un internaute le ferai mais a partir d'un script php. Comme en effectuant une requete http. C ce que j'essaie de faire mais sa ne marche pas.
Merci.
Du point de vue du serveur web (et c'est ça qui nous intéresse), il n'y a pas de navigateur, il n'y a que des requêtes (GET/POST). Donc il faut voir le code HTML de la page car c'est elle qui contient le formulaire qu'il faudra remplir...
On peut le faire en PHP avec le module Curl.
http://www.seoblackout.com/2008/02/13/soumission-automatique-formulaire/
Raph
J'ai regarder le code source de la page puis récupérer toutes les info du formulaire que j'ai remplie dans ma fonction curl mais qd je valide le formulaire la page que j'appelle me mes cette erreur :
The following problem has been reported:
* Your specified referrer company code could not be accepted
et pourtant je lui donne toutes les info qu'elle veut au poils de cul donc soit il me manque qu'elle que chose que j'ai pas vu soit ben jen c rien ...
Merci pour ton aide.
c'est pour ça que les messages d'erreur sont importants : c'est le moyen de communication entre le développeur d'une application et l'utilisateur...
Donc, il doit y avoir un pb de referer , c'est à dire "la page qui contient un lien vers la page que tu visite" ou alors "la page qui contient le formulaire".
Il faut donc ajouter ça à ton code :
N'oublie pas de modifier $ch selon ton code et http://... avec l'URL de la page web qui contient le formulaire original.
Raph
Merci pour ton aide.