2011-08-08 4 views
3

Ce que je suis en train de réaliser est la suivante:Comment faire une requête à une page web avec PHP?

1er- Je veux interroger une page comme Google, mais sans le remplir manuellement Cherchons déposé Je veux 2nd obtenir le résultat et l'enregistrer dans une base de données

je vis un exemple de le faire avec C# ici

http://www.farooqazam.net/c-sharp-auto-click-button-and-auto-fill-form/comment-page-1/#comment-27256

mais je voudrais le faire avec php, pouvez-vous me aider s'il vous plaît?

Merci

+0

Qu'est-ce que vous avez à ce jour? – JJJ

+0

Je n'ai rien, je suis toujours à la recherche – Elias

Répondre

7

Vous devez utiliser cURL pour ce faire, non seulement parce qu'il s'agit de way faster que de file_get_contents, mais aussi parce qu'il a beaucoup plus de fonctionnalités. Une autre raison de l'utiliser est que, comme Xeoncross le mentionne correctement dans les commentaires, file_get_contents peut être désactivé par votre hébergeur pour des raisons de sécurité.

Un exemple de base serait celui-ci:

$curl_handle = curl_init(); 
curl_setopt($curl_handle, CURLOPT_URL, 'http://example.com'); 
curl_exec($curl_handle); // Execute the request 
curl_close($curl_handle); 

Si vous avez besoin des données de retour de la demande, vous devez indiquer l'option CURLOPT_RETURNTRANSFER:

$curl_handle = curl_init(); 
curl_setopt($curl_handle, CURLOPT_URL, 'http://example.com'); 
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true); // Fetch the contents too 
$html = curl_exec($curl_handle); // Execute the request 
curl_close($curl_handle); 

Il y a des tonnes d'options cURL Par exemple, vous pouvez définir un délai d'attente de demande:

curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2); // 2 second timeout 

Pour référence de toutes les options voir la référence curl_setopt().

+0

Pouvez-vous donner un exemple s'il vous plaît? – Elias

+0

@Elias: l'a fait. – fresskoma

+2

C'est l'approche recommandée. De plus, certains hébergeurs désactivent le protocole http 'file_get_contents()' parce qu'il n'est pas construit pour ce type de chose aussi. – Xeoncross

3
$html = file_get_contents('http://example.com'); 

est la version la plus simple que vous obtiendrez.

1
<?php 
$r = new HttpRequest('http://example.com/feed.rss', HttpRequest::METH_GET); 
$r->setOptions(array('lastmodified' => filemtime('local.rss'))); 
$r->addQueryData(array('category' => 3)); 
try { 
    $r->send(); 
    if ($r->getResponseCode() == 200) { 
     file_put_contents('local.rss', $r->getResponseBody()); 
    } 
} catch (HttpException $ex) { 
    echo $ex; 
} 
?> 

De l'php manual ...

0

Vous pouvez utiliser PHP CUrl, pour manupulations détaillées avec le site auquel vous accédez!

vous pouvez même effectuer get et messages sur le site auquel vous accédez, ou utiliser des services de différents sites (dans le cas où le site fournit des services!).

0

Si vous trouvez le nom du champ (q) que vous voulez remplir sur la page à distance (Google), vous pouvez le remplir en utilisant la syntaxe GET:

http://www.google.com/?q=hello 
+0

-1 Qu'est-ce que cela a à voir avec faire des demandes de PHP? – fresskoma

+1

@ x3ro Cela a à voir avec le lien C# qu'il a posté. Le PO semble poser deux questions différentes. La première question était comment interroger Google sans taper dans la boîte de recherche. – abarrington

+0

Ah, ma mauvaise, désolé. Je pensais qu'il avait déjà compris cela, et demandait maintenant un moyen de le faire par programme.A dû éditer la réponse pour enlever la downvote;) – fresskoma

Questions connexes