--------------------------------------------采集---------------------------------------------
一:普通采集
①方法:
file_get_contents("一參");//擷取頁面全部内容;
//一參:參數可為'路徑'或者'靜态頁面的名'
preg_match_all(一參,二參,三參);//通過正則比對擷取的内容(比對全部);
//一參:正則; 二參:内容; 三參:變量名
preg_match(一參,二參,三參);//通過正則比對擷取的内容(比對一次);
strip_tags(一參);//去除HTML,XML和PHP中的各種标簽
//一參:要去除标簽的變量名
②,開啟php.ini中的配置:allow_url_fopen=On
③,範例:
$url=file_get_contents("路徑");
$path='比對正則';
preg_match_all($path,$url,$ul);
$pathg="/http:\/\/www\.yanxuening\.com\/0902\/demo\d{1}\.htm/s";
preg_match_all($pathg,implode($ul[1],""),$qq);
foreach($qq[0] as $k=>$v){
//擷取詳細内容
}
二:Snoopy采集
fetch(一參);//擷取網頁的内容
//一參:要采集頁面的路徑
fetchtext(一參);//隻擷取網頁中的文字内容
fetchlinks(一參);//傳回連結
submit(一參,二參);//僞登入(俗稱假登入)
//一參:網頁的位址;二參:數組名(登入所需要的一些值)
②步驟:
require_once(一參)/include_once(一參);//引入'Snoopy.class.php'類
$snoopy=new Snoopy();//執行個體化snoopy
$snoopy->fetch(一參);//擷取頁面全部内容
//一參:正則; 二參:内容; 三參:變量名
foreach(){}//做出相應的循環
$snoopy->results//Snoopy采集完成後存儲在其中
③範例:
require_once("Snoopy.class.php");
$snoopy=new Snoopy();
$snoopy->fetch("采集的路徑");
preg_match_all($path,$snoopy->results,$qq);
三:CURL采集
①函數:
curl_init()//初始化curl
curl_setopt(一參,二參,三參)//設定curl
//一參:初始化的變量名 二參:以下三個函數之一
三參:位址或不唯一
curl_exec(一參)//運作curl
//一參:初始化的變量名
curl_close(一參)//關閉curl
//一參:初始化的變量名
CURLOPT_URL//想用PHP取回URL的位址;
CURLOPT_HEADER//輸出一個頭,包含在輸出中;
CURLOPT_RETURNTRANSFER//擷取curl的字元串值
②:範例
//初始化curl
$curl=curl_init();
//設定采集的網頁
curl_setopt($curl,CURLOPT_URL,'http://news.163.com/domestic/');
//設定頭
curl_setopt($curl,CURLOPT_HEADER,1);
//設定以字元串的形式輸出
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
//運作curl
$data=curl_exec($curl);
//關閉curl
curl_close($curl);
----------------------------------------------XML--------------------------------------------------
一:方法
new DOMDocument()//聲明一個'XML'對象
createElement(一參)//建立節點
//一參:節點的名字
createTextNode(一參)//建立文本節點
//一參:名字;
appendChild(一參)//追加子節點
//一參:要追加的名
createAttribute(一參)//建立節點的屬性
//一參:名
getElementsByTagName(一參)//找節點
//節點名
hasChildNodes()//判斷該節點下是否子節點
nodeValue//擷取值
load(一參)//引入xml檔案
//一參:xml檔案名
save(一參)//建立XML
//一參:要建立的xml檔案名
②經典例句:
//擷取屬性
echo $student->item($k)->attributes->item(0)->nodeValue;
//找到name節點,且擷取其中name的的值
$name=$v->getElementsByTagName("name");
echo $name->item(0)->nodeValue;
注意一下幾點:
1,建立xml時“$dom=new DOMDocument("1.0","utf-8");”//參數必須有兩個
2,讀取xml時“$dom=new DOMDocument();”//參數沒有
③讀取XML範例
$dom=new DOMDocument();
$dom->load("brand.xml");
$brands=$dom->getElementsByTagName("brands");
foreach($brands as $key=>$val){
$brand=$val->getElementsByTagName("brand");
foreach($brand as $k=>$v){
$brand_id=$v->getElementsByTagName("brand_id");
echo $brand_id->item(0)->nodeValue
④建立XML範例
$arr=array('name'=>'zhangsan','sex'=>'男');
$dom=new DOMDocument("1.0","utf-8");
$students=$dom->createElement("students");
$dom->appendChild($students);
foreach($arr as $k=>$v){
$name=$dom->createElement($k);
$students->appendChild($name);
$value=$dom->createTextNode($v);
$name->appendChild($value);
$dom->save('2.xml');
本文轉自噼裡啪啦啦 51CTO部落格,原文連結http://blog.51cto.com/pilipala/1670694:,如需轉載請自行聯系原作者