天天看點

采集

--------------------------------------------采集---------------------------------------------

一:普通采集

①方法:

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:,如需轉載請自行聯系原作者