php抓取某個(gè)網(wǎng)站數(shù)據(jù) php獲取網(wǎng)頁(yè)數(shù)據(jù)

怎么用php采集網(wǎng)站數(shù)據(jù)

簡(jiǎn)單的分了幾個(gè)步驟:

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序定制開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了富縣免費(fèi)建站歡迎大家使用!

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ù)

PHP抓取網(wǎng)頁(yè)指定內(nèi)容

?php

/*

* 如下: 方法有點(diǎn)笨

* 抓取網(wǎng)頁(yè)內(nèi)容用 PHP 的正則

* 用JS每隔5分鐘刷新當(dāng)前頁(yè)面---即重新獲取網(wǎng)頁(yè)內(nèi)容

*

* 注: $mode中--title/title-更改為所需內(nèi)容(如 $mode = "#a(.*)/a#";獲取所有鏈接)

*

* window.location.href="";中的

* 更改為自己的URL----作用:即刷新當(dāng)前頁(yè)面

*

* setInterval("ref()",300000);是每隔300000毫秒(即 5 * 60 *1000 毫秒即5分鐘)執(zhí)行一次函數(shù) ref()

*

* print_r($arr);輸出獲得的所有內(nèi)容 $arr是一個(gè)數(shù)組 可根據(jù)所需輸出一部分(如 echo $arr[1][0];)

* 若要獲得所有內(nèi)容 可去掉

* $mode = "#title(.*)/title#";

if(preg_match_all($mode,$content,$arr)){

print_r($arr);

echo "br/";

echo $arr[1][0];

}

再加上 echo $content;

*/

$url = ""; //目標(biāo)站

$fp = @fopen($url, "r") or die("超時(shí)");

$content=file_get_contents($url);

$mode = "#title(.*)/title#";

if(preg_match_all($mode,$content,$arr)){

//print_r($arr);

echo "br/";

echo $arr[1][0];

}

?

script language="JavaScript" type="text/javascript"

--

function ref(){

window.location.href="";

}

setInterval("ref()",300000);

//--

/script

php如何獲取網(wǎng)址中的參數(shù)

比如有一個(gè)網(wǎng)址為

http://域名/goods.php?u=59id=24#pinglun

我想得到這個(gè)id值

可以用正則,也可以用php函數(shù)解析到數(shù)組中

用正則可以這樣

preg_match('/id=(\d+)/',$_SERVER["REQUEST_URI"],$m);//$_SERVER 這個(gè)表示當(dāng)前網(wǎng)址url

print_r($m[1]);exit;

或者用parse_url()及parse_str()函數(shù)

$cur_q=parse_url($_SERVER["REQUEST_URI"],PHP_URL_QUERY);

parse_str($cur_q,$myArray);

print_r($myArray["id"]);exit;

拓展資料

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預(yù)處理器”)是一種通用開(kāi)源腳本語(yǔ)言。語(yǔ)法吸收了C語(yǔ)言、Java和Perl的特點(diǎn),利于學(xué)習(xí),使用廣泛,主要適用于Web開(kāi)發(fā)領(lǐng)域。PHP 獨(dú)特的語(yǔ)法混合了C、Java、Perl以及PHP自創(chuàng)的語(yǔ)法。它可以比CGI或者Perl更快速地執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)。用PHP做出的動(dòng)態(tài)頁(yè)面與其他的編程語(yǔ)言相比,PHP是將程序嵌入到HTML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;PHP還可以執(zhí)行編譯后代碼,編譯可以達(dá)到加密和優(yōu)化代碼運(yùn)行,使代碼運(yùn)行更快。

PHP的特性包括:

1. PHP 獨(dú)特的語(yǔ)法混合了 C、Java、Perl 以及 PHP 自創(chuàng)新的語(yǔ)法。

2. PHP可以比CGI或者Perl更快速的執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)——?jiǎng)討B(tài)頁(yè)面方面,與其他的編程語(yǔ)言相比,

PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成htmL標(biāo)記的CGI要高許多;

PHP具有非常強(qiáng)大的功能,所有的CGI的功能PHP都能實(shí)現(xiàn)。

3. PHP支持幾乎所有流行的數(shù)據(jù)庫(kù)以及操作系統(tǒng)。

4. 最重要的是PHP可以用C、C++進(jìn)行程序的擴(kuò)展!

參考資料:百度百科 PHP

phpstudy怎么抓取網(wǎng)頁(yè)數(shù)據(jù)

什么網(wǎng)頁(yè)數(shù)據(jù)?

是打開(kāi) 本地網(wǎng)頁(yè)還是打開(kāi)網(wǎng)上網(wǎng)頁(yè)

如果是本地網(wǎng)頁(yè)的話? 在瀏覽器上輸入127.0.0.1或者localhost進(jìn)行訪問(wèn)

如果是外網(wǎng)我理解的是你要獲取外網(wǎng)的一個(gè)網(wǎng)頁(yè),可以用代碼或者程序來(lái)實(shí)現(xiàn)

(一般稱為采集程序,或者小偷程序)

//個(gè)人認(rèn)為curl好一點(diǎn),因?yàn)閏url可以模擬瀏覽器,有的網(wǎng)站會(huì)過(guò)濾機(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;???????????????????????//寫(xiě)入cookie信息

//????setcookie('cookie_jar',?$cookie_jar);?//保存cookie路徑

//}

#開(kāi)始發(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;?//寫(xiě)入cookie信息

setcookie('cookie_jar',?$cookie_jar);?//保存cookie路徑

}

curl_setopt_array($ch,?$params);?//傳入curl參數(shù)

$content?=?curl_exec($ch);?//執(zhí)行

return?$content;

}

}

如何利用php抓取網(wǎng)站動(dòng)態(tài)產(chǎn)生的數(shù)據(jù)

$url = "網(wǎng)站地址目錄";

$queryServer = curl_init();

curl_setopt($queryServer, CURLOPT_URL, $url);

curl_setopt($queryServer, CURLOPT_HEADER, 0);

curl_setopt($queryServer, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($queryServer, CURLOPT_RETURNTRANSFER, true);

curl_setopt($queryServer, CURLOPT_CONNECTTIMEOUT, 10);

curl_setopt($queryServer, CURLOPT_TIMEOUT, 30);

$html = curl_exec($queryServer);

$html = iconv('UTF-8','GBK//IGNORE',$html); //如果你需要是的數(shù)據(jù)是utf-8編碼的,這一行可以注銷,如果需要gbk編碼的,請(qǐng)保留.如果出現(xiàn)亂碼,就是一行的問(wèn)題,你自己調(diào)著試吧

//echo $holder;exit; 此處可以輸出來(lái)測(cè)試.

$html = str_replace(array("\n","\r","\t"),"",$html);

$preg = '/table\s+width=\"800\"[^]+(.*?)\/table/';

preg_match_all($preg,$html,$out);

//匹配每行

preg_match_all('/tr[^]+(.*?)\/tr/',$out[1][0],$tr);

//匹配每個(gè)td

$result = array();

$match = '/td.+([^]+)\/td/U';

foreach( $tr[0] as $key = $value ){

preg_match_all($match,$value,$arr);

$result[] = $arr[1];

}

//輸出測(cè)試,$result就是你要的數(shù)據(jù),至于你要怎么輸出顯示格式,那就隨心調(diào)就好了。

foreach( $result as $key = $value ){

echo implode("\t",$value);

echo "br";

}

exit;

PHP怎樣抓取網(wǎng)頁(yè)代碼中動(dòng)態(tài)顯示的數(shù)據(jù)

PHP Simple HTML DOM或者phpQuery可以直接取得某些div中的內(nèi)容,里面有幾個(gè)例子專門(mén)針對(duì)于網(wǎng)頁(yè)抓取,調(diào)整好抓取頻次,舍去已經(jīng)存在的數(shù)據(jù),你可以參考下

;id=57class=2

網(wǎng)站標(biāo)題:php抓取某個(gè)網(wǎng)站數(shù)據(jù) php獲取網(wǎng)頁(yè)數(shù)據(jù)
文章出自:http://muchs.cn/article42/hjcghc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈商城網(wǎng)站、標(biāo)簽優(yōu)化企業(yè)建站、App開(kāi)發(fā)、軟件開(kāi)發(fā)

廣告

聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)