十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
什么網(wǎng)頁數(shù)據(jù)?

澧縣網(wǎng)站建設公司成都創(chuàng)新互聯(lián),澧縣網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為澧縣上千多家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設要多少錢,請找那個售后服務好的澧縣做網(wǎng)站的公司定做!
是打開 本地網(wǎng)頁還是打開網(wǎng)上網(wǎng)頁
如果是本地網(wǎng)頁的話? 在瀏覽器上輸入127.0.0.1或者localhost進行訪問
如果是外網(wǎng)我理解的是你要獲取外網(wǎng)的一個網(wǎng)頁,可以用代碼或者程序來實現(xiàn)
(一般稱為采集程序,或者小偷程序)
//個人認為curl好一點,因為curl可以模擬瀏覽器,有的網(wǎng)站會過濾機器人
//1.php代碼
//把網(wǎng)頁讀入一個字符串
$contone?=?file_get_contents('url');
print_r($contone);
//curl采集
#初始化curl??(true/false)
$ch=curl_init();
#請求url地址
$params[CURLOPT_URL]='網(wǎ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)頁內(nèi)容
print_r($content);
//下面是整個curl采集類
class?Curl{
#采集的地址
public?$url;
#匹配的正則
public?$preg;
#模擬登錄需要的用戶名
public?$username;
#模擬登錄需要的密碼;
public?$pwd;
#cookie存儲的路徑
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();
#請求url地址
$params[CURLOPT_URL]=$this-url;
#是否返回響應頭信息
$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)生一個cookie文件
//????$params[CURLOPT_COOKIEJAR]?=?$cookie_jar;???????????????????????//寫入cookie信息
//????setcookie('cookie_jar',?$cookie_jar);?//保存cookie路徑
//}
#開始發(fā)送請求,傳入curl參數(shù)
curl_setopt_array($ch,?$params);
$content=curl_exec($ch);
preg_match_all($this-preg,$content,$arr);
return?$arr;
}
/**
*?采集遠程圖片
*?@param?$img??圖片路徑??是一個數(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(){
//采集的信息需要先登錄的就要先模擬登錄
//設置cookie保存路徑
$ch?=?curl_init();
//組裝用戶名和密碼
$info['username']?=?$this-username;
$info['password']?=?$this-pwd;
//模擬表單提交
$params[CURLOPT_URL]?=?$this-url;????//請求url地址
$params[CURLOPT_HEADER]?=?true;?//是否返回響應頭信息
$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)生一個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;
}
}
簡單的分了幾個步驟:
1、確定采集目標
2、獲取目標遠程頁面內(nèi)容(curl、file_get_contents)
3、分析頁面html源碼,正則匹配你需要的內(nèi)容(preg_match、preg_match_all),這一步最為重要,不同頁面正則匹配規(guī)則不一樣
4、入庫
訪問需要采集的頁面,如果數(shù)據(jù)是用js輸出的html,那么必定有接口或者本身頁面中給js提供了數(shù)據(jù),來遍歷輸出html。
用chrome的審查元素中的network,可以單獨看xhr,看看是否是ajax請求的接口,如果數(shù)據(jù)是從接口來的,直接用PHP去獲取那個接口的數(shù)據(jù)就可以了。
如果沒有ajax請求,查看html源代碼,在里面找數(shù)據(jù)。