2011-08-08 38 views
3

我想要實現的是:如何向使用PHP的網頁發出請求?

一號通我要查詢一個像谷歌的頁面,但沒有填充它的搜索手動提交​​ 2階我想要得到的結果,並將其保存到數據庫

我看到C#在這裏

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

但我想用PHP做這樣的一個例子,你能幫助我嗎?

感謝

+0

你有什麼這麼遠嗎? – JJJ

+0

我什麼也沒有,我還在尋找 – Elias

回答

7

您應該使用cURL這樣做,這不僅是因爲它比file_get_contents的way faster,還因爲它具有更多功能。使用它的另一個原因是,正如Xeoncross在評論中正確提到的那樣,出於安全原因,您的虛擬主機可能會禁用file_get_contents。

一個基本的例子將是這樣一個:

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

如果你需要從請求返回的數據,你需要指定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); 

有噸的捲曲選項例如,您可以設置請求超時時間:

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

僅供參考所有選項均參見curl_setopt()參考。

+0

你能舉個例子嗎? – Elias

+0

@Elias:是的。 – fresskoma

+2

這是推薦的方法。此外,一些主機禁用'file_get_contents()'http協議,因爲它不是爲這種類型的東西而構建的。 – Xeoncross

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

是你會得到最簡單的版本。

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; 
} 
?> 

php manual ...

0

您可以使用PHP CUrl,與您訪問網站的詳細manupulations!

您甚至可以在您訪問的網站上執行獲取和發佈內容,或者使用來自不同網站的服務(以防網站提供服務!)。

0

如果你找到你想要填補了遠程頁面(谷歌)的字段(Q)的名稱,你可以通過使用GET語法填充:

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

-1這與請求來自PHP的請求有什麼關係? – fresskoma

+1

@ x3ro它與他發佈的C#鏈接有關。 OP似乎在問兩個不同的問題。第一個問題是如何在不輸入搜索框的情況下查詢Google。 – abarrington

+0

啊,我的壞,對不起。我以爲他已經認識到了這一點,現在正在尋求一種以編程方式實現這一點的方法。不得不編輯答案以刪除downvote;) – fresskoma

相關問題