簡(jiǎn)單的分了幾個(gè)步驟:
長(zhǎng)子網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),長(zhǎng)子網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為長(zhǎng)子上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的長(zhǎng)子做網(wǎng)站的公司定做!
1、確定采集目標(biāo)
2、獲取目標(biāo)遠(yuǎn)程頁(yè)面內(nèi)容(curl、file_get_contents)
3、分析頁(yè)面html源碼,正則匹配你需要的內(nèi)容(preg_match、preg_match_all),這一步最為重要,不同頁(yè)面正則匹配規(guī)則不一樣
4、入庫(kù)
你是想抓別人網(wǎng)頁(yè)上ajax動(dòng)態(tài)載入的數(shù)據(jù)吧? 1、要找到它的ajax載入的URL地址 2、利用PHP的file_get_contents($url)函數(shù)讀取那個(gè)url地址。 3、對(duì)抓取到的內(nèi)容進(jìn)行分析或正則過濾。
PHP Simple HTML DOM或者phpQuery可以直接取得某些div中的內(nèi)容,里面有幾個(gè)例子專門針對(duì)于網(wǎng)頁(yè)抓取,調(diào)整好抓取頻次,舍去已經(jīng)存在的數(shù)據(jù),你可以參考下
;id=57class=2
什么網(wǎng)頁(yè)數(shù)據(jù)?
是打開 本地網(wǎng)頁(yè)還是打開網(wǎng)上網(wǎng)頁(yè)
如果是本地網(wǎng)頁(yè)的話? 在瀏覽器上輸入127.0.0.1或者localhost進(jìn)行訪問
如果是外網(wǎng)我理解的是你要獲取外網(wǎng)的一個(gè)網(wǎng)頁(yè),可以用代碼或者程序來實(shí)現(xiàn)
(一般稱為采集程序,或者小偷程序)
//個(gè)人認(rèn)為curl好一點(diǎn),因?yàn)閏url可以模擬瀏覽器,有的網(wǎng)站會(huì)過濾機(jī)器人
//1.php代碼
//把網(wǎng)頁(yè)讀入一個(gè)字符串
$contone?=?file_get_contents('url');
print_r($contone);
//curl采集
#初始化curl??(true/false)
$ch=curl_init();
#請(qǐng)求url地址
$params[CURLOPT_URL]='網(wǎng)址';
#是否返回響應(yīng)頭信息
$params[CURLOPT_HEADER]?=?true;
#是否將結(jié)果返回
$params[CURLOPT_RETURNTRANSFER]?=?true;
#是否重定向
$params[CURLOPT_FOLLOWLOCATION]?=?true;
#偽造瀏覽器
$params[CURLOPT_USERAGENT]?=?'Mozilla/5.0?(Windows?NT?5.1;?rv:9.0.1)?Gecko/20100101?Firefox/9.0.1';
curl_setopt_array($ch,?$params);
$content=curl_exec($ch);
//輸出網(wǎng)頁(yè)內(nèi)容
print_r($content);
//下面是整個(gè)curl采集類
class?Curl{
#采集的地址
public?$url;
#匹配的正則
public?$preg;
#模擬登錄需要的用戶名
public?$username;
#模擬登錄需要的密碼;
public?$pwd;
#cookie存儲(chǔ)的路徑
private?$cookie_path;
#采集數(shù)據(jù)的字符集
public?$charset;
/**
*?構(gòu)造方法,初始化采集基本信息
*?@param?$url??采集的url
*?@param?$preg?匹配的正則
*?@param?string?$username??用戶名
*?@param?string?$pwd??密碼
*?@param?string?$charset?字符集
*/
public?function?__construct($info){
extract($info);
$this-url=$url;
$this-preg=$preg;
if(isset($charset)){
header("content-type:text/html;charset=".$this-charset);
}else{
header("content-type:text/html;charset=utf-8");
}
if(isset($username)){
$this-username=$username;
}
if(isset($pwd)){
$this-pwd=$pwd;
}
}
/*
*?采集數(shù)據(jù),非表單提交方式,直接采集的
*/
public?function?get_info(){
#初始化curl
$ch=curl_init();
#請(qǐng)求url地址
$params[CURLOPT_URL]=$this-url;
#是否返回響應(yīng)頭信息
$params[CURLOPT_HEADER]?=?true;
#是否將結(jié)果返回
$params[CURLOPT_RETURNTRANSFER]?=?true;
#是否重定向
$params[CURLOPT_FOLLOWLOCATION]?=?true;
#偽造瀏覽器
$params[CURLOPT_USERAGENT]?=?'Mozilla/5.0?(Windows?NT?5.1;?rv:9.0.1)?Gecko/20100101?Firefox/9.0.1';
//判斷是否有cookie,有的話直接使用
//if?(isset($_COOKIE['cookie_jar'])?($_COOKIE['cookie_jar']?||?is_file($_COOKIE['cookie_jar']))){
//????$params[CURLOPT_COOKIEFILE]?=?$_COOKIE['cookie_jar'];?//這里判斷cookie
//}?else?{
//????$cookie_jar?=?tempnam($this-cookie_path,?'cookie');??????????????????//產(chǎn)生一個(gè)cookie文件
//????$params[CURLOPT_COOKIEJAR]?=?$cookie_jar;???????????????????????//寫入cookie信息
//????setcookie('cookie_jar',?$cookie_jar);?//保存cookie路徑
//}
#開始發(fā)送請(qǐng)求,傳入curl參數(shù)
curl_setopt_array($ch,?$params);
$content=curl_exec($ch);
preg_match_all($this-preg,$content,$arr);
return?$arr;
}
/**
*?采集遠(yuǎn)程圖片
*?@param?$img??圖片路徑??是一個(gè)數(shù)組
*?@param?$save_path???圖片保存在你本地的路徑
*?@return?bool
*/
public?function?get_img($img,$save_path){
for($i=0;$icount($img);$i++)?{
$res=@file_get_contents($img[$i]);
$img_type=substr($img[$i],?strrpos($img[$i],?"."));
$path=$save_path.time().rand(1,9999999).mt_rand()?.$img_type;
$img[$i]?=?$path;
file_put_contents($path,$res);
}
return?$img;
}
//登錄后采集
public?function?register_info(){
//采集的信息需要先登錄的就要先模擬登錄
//設(shè)置cookie保存路徑
$ch?=?curl_init();
//組裝用戶名和密碼
$info['username']?=?$this-username;
$info['password']?=?$this-pwd;
//模擬表單提交
$params[CURLOPT_URL]?=?$this-url;????//請(qǐng)求url地址
$params[CURLOPT_HEADER]?=?true;?//是否返回響應(yīng)頭信息
$params[CURLOPT_RETURNTRANSFER]?=?true;?//是否將結(jié)果返回
$params[CURLOPT_FOLLOWLOCATION]?=?true;?//是否重定向
$params[CURLOPT_USERAGENT]?=?'Mozilla/5.0?(Windows?NT?5.1;?rv:9.0.1)?Gecko/20100101?Firefox/9.0.1';
$postfields?=?'';
//將表單要提交的數(shù)據(jù)編程URL拼接方式
foreach?($info?as?$key?=?$value){
$postfields?.=?urlencode($key)?.?'='?.?urlencode($value)?.?'';
}
$params[CURLOPT_POST]?=?true;
$params[CURLOPT_POSTFIELDS]?=?$postfields;
//判斷是否有cookie,有的話直接使用
if?(isset($_COOKIE['cookie_jar'])($_COOKIE['cookie_jar']||is_file($_COOKIE['cookie_jar']))){
$params[CURLOPT_COOKIEFILE]?=?$_COOKIE['cookie_jar'];?//這里判斷cookie
}else{
$cookie_jar?=?tempnam($this-cookie_path,?'cookie');?//產(chǎn)生一個(gè)cookie文件
$params[CURLOPT_COOKIEJAR]?=?$cookie_jar;?//寫入cookie信息
setcookie('cookie_jar',?$cookie_jar);?//保存cookie路徑
}
curl_setopt_array($ch,?$params);?//傳入curl參數(shù)
$content?=?curl_exec($ch);?//執(zhí)行
return?$content;
}
}
本文標(biāo)題:php怎么抓取網(wǎng)站數(shù)據(jù) php獲取網(wǎng)頁(yè)數(shù)據(jù)
分享路徑:http://muchs.cn/article34/ddcigse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、動(dòng)態(tài)網(wǎng)站、微信小程序、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站改版、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容