程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> php獲取頁面內容的方法

php獲取頁面內容的方法

編輯:PHP基礎知識
 

用php抓取某個頁面的內容,是做采集一定會碰到的情況。

通常情況下file_get_contents函數完全勝任。 但是如果要求特殊一點的話,比如你還想模擬post的方式提交數據,模擬浏覽器痕跡等等,那就要用特殊的方法了~

比如用socket的形式得到你想要的頁面的內容,方法 如下:
$post_data['aa'] = "123";
$post_data['bb'] = "4"; //這兩句模擬post的數組,有多少post值,就自己配多少
$URL_Info = parse_url("http://www.test.com/aa/wzss.do"); //目標頁面
$referer = "http://www.test.com/aa/"; //表示你是從哪個頁面點到目標頁面的(欺騙)
//查詢字符串編碼
foreach ($post_data as $key => $value) {
$values[] = "$key=" . urlencode(iconv("gb2312", "utf-8", $value)); //這裡注意看對方網站的post的編碼。
}
$data_string = implode("&", $values);
if (!isset ($URL_Info["port"])) {
$URL_Info["port"] = 80; //看對方是什麼端口
}
$request .= "POST " . $URL_Info["path"] . " HTTP/1.1\r\n";
$request .= "Host: " . $URL_Info["host"] . "\r\n";
$request .= "Referrer: $referer\r\n";
$request .= "Content-type: application/x-www-form-urlencoded\r\n";
$request .= "Content-length: " . strlen($data_string) . "\r\n";
$request .= "Connection: close\r\n";
$request .= "\r\n";
$request .= $data_string . "\r\n";
//echo $request;
$fp = @ fsockopen($URL_Info["host"], $URL_Info["port"], $errno, $errstr, 20);
fputs($fp, $request);
while (!feof($fp)) {
$result .= fgets($fp, 128);
}
fclose($fp);
for ($r = 0; $r < 10; $r++) {
if (strpos($result, "500 Internal") != 0) {
$fp = @ fsockopen($URL_Info["host"], $URL_Info["port"], $errno, $errstr, 20);
fputs($fp, $request);
$result = "";
while (!feof($fp)) {
$result .= fgets($fp, 128);
}
fclose($fp);
} else {
break;
}
}
$result = str_replace("\r\n", "", $result);
echo $result;die;

至此,就可以獲取到你需要的頁面內容了~

接下來對頁面內容的處理,就看你正則表達式的運用了~

下一篇再寫點利用正則來獲得你需要的內容的話題吧。
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved