php爬蟲神器cURL


cURL

網頁資源(編寫網頁爬蟲)
接口資源
ftp服務器文件資源
其他資源

static public function curl($url, $data = array(), $timeout = 5) {
		$ch = curl_init ();
		if (is_array ( $data ) && $data) {
			// http_build_query — 生成 URL-encode 之后的請求字符串,支持數組提交
			$formdata = http_build_query ( $data );
			
			curl_setopt ( $ch, CURLOPT_POST, true );
			curl_setopt ( $ch, CURLOPT_POSTFIELDS, $formdata );
		}
		curl_setopt ( $ch, CURLOPT_URL, $url );
		curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
		curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
		curl_setopt ( $ch, CURLOPT_TIMEOUT, $timeout );
		$result = curl_exec ( $ch );
		curl_close ( $ch );
		return $result;
}

下面是簡單的爬蟲,爬網頁數據。

<?php
/**
 * 簡單爬蟲
 */
$ch = curl_init('http://www.baidu.com');
curl_exec($ch);
curl_close($ch);

替換爬出來的網頁數據。

<?php
/**
 * 簡單爬蟲
 */
$curlobj = curl_init();
curl_setopt($curlobj,CURLOPT_URL,"http://www.baidu.com"); // 設置抓取的網頁
curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true); // 設置不打印
$output=curl_exec($curlobj); // 執行
curl_close($curlobj); // 關閉
echo str_replace("百度","搜索",$output);

post調接口數據

http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?op=getWeather

<?php
/**
 * 簡單爬蟲
 */
$curlobj = curl_init();
$url = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getWeather";
$data= "theCityCode=宿遷&theUserID=6c0fbb1189324dfab6a66963738d768b"; // 麻痹,這個只能試用五天
curl_setopt($curlobj,CURLOPT_URL,$url); // 設置抓取的網頁
curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true); // 設置不打印
curl_setopt($curlobj,CURLOPT_POST,1); // 設置post
curl_setopt($curlobj,CURLOPT_POSTFIELDS,$data); // 設置post數據
$output=curl_exec($curlobj); // 執行
if(!curl_errno($curlobj)){ // 返回錯誤代碼或在沒有錯誤發生時返回 0 (零)。
    echo $output;
} else {
    echo 'Curl error:'.curl_error($curlobj);
}
curl_close($curlobj); // 關閉

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">
  <string>江蘇 宿遷</string>
  <string>宿遷</string>
  <string>1907</string>
  <string>2018/04/26 22:10:44</string>
  <string>今日天氣實況:氣溫:18℃;風向/風力:西南風 1級;濕度:78%</string>
  <string>紫外線強度:弱。空氣質量:良。</string>
  <string>紫外線指數:弱,輻射較弱,塗擦SPF12-15、PA+護膚品。
健臻·血糖指數:較易波動,血糖較易波動,注意監測。
感冒指數:較易發,溫差較大,較易感冒,注意防護。
穿衣指數:較舒適,建議穿薄外套或牛仔褲等服裝。
洗車指數:較適宜,無雨且風力較小,易保持清潔度。
空氣污染指數:良,氣象條件有利於空氣污染物擴散。
</string>
  <string>4月26日 多雲</string>
  <string>13℃/23℃</string>
  <string>南風3-4級</string>
  <string>1.gif</string>
  <string>1.gif</string>
  <string>4月27日 多雲</string>
  <string>11℃/26℃</string>
  <string>東北風轉東南風3-4級</string>
  <string>1.gif</string>
  <string>1.gif</string>
  <string>4月28日 多雲</string>
  <string>17℃/27℃</string>
  <string>東南風3-4級</string>
  <string>1.gif</string>
  <string>1.gif</string>
  <string>4月29日 多雲</string>
  <string>19℃/28℃</string>
  <string>東南風3-4級</string>
  <string>1.gif</string>
  <string>1.gif</string>
  <string>4月30日 多雲</string>
  <string>19℃/30℃</string>
  <string>東南風轉東風3-4級</string>
  <string>1.gif</string>
  <string>1.gif</string>
  <string>5月1日 小雨</string>
  <string>17℃/26℃</string>
  <string>東北風4-5級</string>
  <string>7.gif</string>
  <string>7.gif</string>
  <string>5月2日 多雲轉陰</string>
  <string>11℃/27℃</string>
  <string>東北風4-5級轉無持續風向小於3級</string>
  <string>1.gif</string>
  <string>2.gif</string>
</ArrayOfString>

讀取FTP數據

<?php
/**
 * 簡單爬蟲
 */
$curlobj = curl_init();
$url = "ftp://192.168.199.126/info.txt";
curl_setopt($curlobj,CURLOPT_URL,$url); // 設置抓取的網頁
curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true); // 設置不打印
curl_setopt($curlobj,CURLOPT_HEADER,0);
curl_setopt($curlobj,CURLOPT_TIMEOUT,300); // 設置300秒的下載時間
$outfile = fopen('download_file.txt','wb'); // 保存到本地的文件名
curl_setopt($curlobj,CURLOPT_FILE,$outfile);
$r=curl_exec($curlobj); // 執行
fclose($outfile);
if(!curl_errno($curlobj)){ // 返回錯誤代碼或在沒有錯誤發生時返回 0 (零)。
    echo "RETURN:" .$r;
} else {
    echo 'Curl error:'.curl_error($curlobj);
}
curl_close($curlobj); // 關閉

RETURN:1
<?php
/**
 * 簡單爬蟲
 */
$curlobj = curl_init();
$url = "ftp://192.168.199.126/info.txt";
curl_setopt($curlobj,CURLOPT_URL,$url); // 設置抓取的網頁
curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true); // 設置不打印
curl_setopt($curlobj,CURLOPT_HEADER,0);
curl_setopt($curlobj,CURLOPT_TIMEOUT,300); // 設置300秒的下載時間
//$outfile = fopen('download_file.txt','wb'); // 保存到本地的文件名
//curl_setopt($curlobj,CURLOPT_FILE,$outfile);
$r=curl_exec($curlobj); // 執行
//fclose($outfile);
if(!curl_errno($curlobj)){ // 返回錯誤代碼或在沒有錯誤發生時返回 0 (零)。
    echo "RETURN:" .$r;
} else {
    echo 'Curl error:'.curl_error($curlobj);
}
curl_close($curlobj); // 關閉
RETURN:hello world!

上傳FTP數據

<?php
/**
 * 簡單爬蟲
 */
$curlobj = curl_init();
$localfile = 'upload_file.txt';
$fp = fopen($localfile,'r');
$url = "ftp://192.168.199.126/upload/for_upload_file.txt"; // 確保目錄有寫權限
curl_setopt($curlobj,CURLOPT_URL,$url); // 設置抓取的網頁
curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true); // 設置不打印
curl_setopt($curlobj,CURLOPT_HEADER,0);
curl_setopt($curlobj,CURLOPT_TIMEOUT,300); // 設置300秒的下載時間

curl_setopt($curlobj,CURLOPT_UPLOAD,1);
curl_setopt($curlobj,CURLOPT_INFILE,$fp);
curl_setopt($curlobj,CURLOPT_INFILESIZE,filesize($localfile));

$r=curl_exec($curlobj); // 執行
fclose($fp);
if(!curl_errno($curlobj)){ // 返回錯誤代碼或在沒有錯誤發生時返回 0 (零)。
    echo "RETURN:上傳成功!";
} else {
    echo 'Curl error:'.curl_error($curlobj);
}
curl_close($curlobj); // 關閉

還是很牛逼的,常用於post提交獲取數據和爬蟲獲取資源。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM