2015-09-13 3 views
0

J'ai essayé de collecter des données pour un site Web que j'aimerais conserver dans une base de données. C'est un magasin de commerce électronique, donc il a une configuration assez standard avec les catégories, produits et avis.Création d'un grattoir pour un site Web avec connexion utilisateur

J'ai essayé quelques grattoirs, extensions de navigateur et logiciels en ligne. Certains ont travaillé en termes de saisie des données dont j'avais besoin, mais ils ne pouvaient pas naviguer sur l'ensemble du site pour obtenir tous les renseignements, généralement des pages simples. L'inconvénient de certains est qu'ils ne supportaient pas les cookies ou les sessions d'un navigateur interne. De plus, le recours à la mise en miroir du site avec des rippers de sites tels que Offline Explorer n'a pas été utile car ils se déconnectent parfois même après m'être connecté depuis le navigateur interne (j'ai exclu les liens de déconnexion). Qu'est-ce que je demande est-il possible en PHP de créer un grattoir qui naviguera à travers une URL spécifique (1) et retournera les éléments que j'ai demandés en tant que tableau, tout en utilisant un cookie ID? Je sais que vous pouvez utiliser cURL, mais j'ai supposé que vous deviez fournir un nom d'utilisateur/mot de passe, mais le site que je suis en train de gratter utilise une image Captcha sur la page de connexion, qui s'est avérée difficile à surmonter. Si cURL accepte les identifiants de cookies de navigateur que je peux copier à partir de mon identifiant, ce serait parfait, j'ai juste besoin de conseils avec une solution correcte.

+0

Relativement simple dans CURL. Copiez les cookies et le nom du navigateur du navigateur depuis votre navigateur, placez-les dans les OPT CURL, récupérez les pages, utilisez _return transfer_. – DeDee

+0

Je ne trouve aucun exemple de cela, je n'ai jamais utilisé cURL auparavant - tout ce que je peux trouver est de fournir un document cookie avec un nom d'utilisateur et un mot de passe. – Danny

+0

Il y a beaucoup sur php.net, le meilleur endroit pour commencer. http://php.net/manual/en/book.curl.php, http://php.net/manual/fr/function.curl-exec.php, http://php.net/manual/fr/ function.curl-setopt.php – DeDee

Répondre

1

Vous pouvez utiliser: 1) cURL pour fournir vos propres cookies:

$curl = curl_init();//creates cURL 
curl_setopt($curl, CURLOPT_URL, $url);//$url - your url 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//all data will be in $out 
curl_setopt($curl, CURLOPT_COOKIE, "A=".$A.";B=".$B.";C=".$C);//$A,$B,$C - your cookies 
$out = curl_exec($curl);//makes a request and stores all data in $out 
curl_close($curl);//closes cURL to free memory 

2) cURL pour recevoir les cookies des en-têtes de réponse du navigateur:

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $url);//$url - your url 
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);//all data will be in $out 
curl_setopt($curl, CURLOPT_HEADER, true);//if you want to receive server's headers 
$out = curl_exec($curl); 
curl_close($curl); 

3) cURL pour fournir votre propre POST/GET demande

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $url);//$url - your url 
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); 
$data = array('login' => LOGIN, 'pwd' => PASSWORD);//your post data array 
curl_setopt($curl, CURLOPT_POST, true);//enables post request 
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); 
$out = curl_exec($curl); 
curl_close($curl); 

Hope, vous le trouverez uTILE

+0

Merci beaucoup, cela m'a aidé à mieux comprendre cURL, comme pour les données de sortie, est-ce que le contenu de la page que je retournerais? – Danny

+0

Dans cURL, cela dépend des options que vous fournissez. si vous utilisez curl_setopt ($ curl, CURLOPT_RETURNTRANSFER, true); - tout le contenu sera en $ out, sinon il sera imprimé à l'écran. Tu devrais jouer avec. Utilisez le manuel php =). http://php.net/manual/en/function.curl-setopt.php –

+0

si vous utilisez curl_setopt ($ curl, CURLOPT_HEADER, true); - vous recevrez les en-têtes du serveur au lieu du contenu –