真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php抓取網(wǎng)頁數(shù)據(jù)保存 php自動采集網(wǎng)頁內(nèi)容

抓取網(wǎng)頁數(shù)據(jù)怎么保存到數(shù)據(jù)庫 php

給一個(gè)例子你看看吧.

創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,先為十堰鄖陽等服務(wù)建站,十堰鄖陽等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為十堰鄖陽企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

if($pro_list_contents=@file_get_contents(''))

{

preg_match_all("/td width=\"50%\" valign=\"top\"(.*)td width=\"10\"img src=\"images\/spacer.gif\"/isU", $pro_list_contents, $pro_list_contents_ary);

for($i=0; $icount($pro_list_contents_ary[1]); $i++)

{

preg_match_all("/a href=\"(.*)\"img src=\"(.*)\".*span(.*)\/span/isU", $pro_list_contents_ary[1][$i], $url_img_price);

$url=addslashes($url_img_price[1][0]);

$img=str_replace(' ', '20%', trim(''.$url_img_price[2][0]));

$price=(float)str_replace('$', '', $url_img_price[3][0]);

preg_match_all("/a class=\"ml1\" href=\".*\"(.*)\/a/isU", $pro_list_contents_ary[1][$i], $proname_ary);

$proname=addslashes($proname_ary[1][0]);

include("inc/db_connections.php");

$rs=mysql_query("select * from pro where Url='$url' and CateId='{$cate_row['CateId']}'"); //是否已經(jīng)采集了

if(mysql_num_rows($rs))

{

echo "跳過:{$url}br";

continue;

}

$basedir='/u_file/pro/img/'.date('H/');

$save_dir=Build_dir($basedir); //創(chuàng)建目錄函數(shù)

$ext_name = GetFileExtName( $img ); //取得圖片后輟名

$SaveName = date( 'mdHis' ) . rand( 10000, 99999 ) . '.' . $ext_name;

if( $get_file=@file_get_contents( $img ) )

{

$fp = @fopen( $save_dir . $SaveName, 'w' );

@fwrite( $fp, $get_file );

@fclose( $fp );

@chmod( $save_dir . $SaveName, 0777 );

@copy( $save_dir . $SaveName, $save_dir . 'small_'.$SaveName );

$imgpath=$basedir.'small_'.$SaveName;

}

else

{

$imgpath='';

}

if($pro_intro_contents=@file_get_contents($url))

{

preg_match_all("/\/h1(.*)\/td\/tr/isU", $pro_intro_contents, $pro_intro_contents_ary);

$p_contents=addslashes(str_replace('src="', 'src="', $pro_intro_contents_ary[1][0]));

$p_contents=SaveRemoteImg($p_contents, '/u_file/pro/intro/'.date('H/')); //把遠(yuǎn)程html代碼里的圖片保存到本地

}

$t=time();

mysql_query("insert into pro(CateId, ProName, PicPath_0, S_PicPath_0, Price_0, Contents, AddTime, Url) values('{$cate_row['CateId']}', '$proname', '$imgpath', '$img', '$price', '$p_contents', '$t', '$url')");

echo $url.$img.$cate."br\r\n";

}

}

使用PHP的cURL庫進(jìn)行網(wǎng)頁抓取

使用PHP的cURL庫可以簡單和有效地去抓網(wǎng)頁 你只需要運(yùn)行一個(gè)腳本 然后分析一下你所抓取的網(wǎng)頁 然后就可以以程序的方式得到你想要的數(shù)據(jù)了 無論是你想從從一個(gè)鏈接上取部分?jǐn)?shù)據(jù) 或是取一個(gè)XML文件并把其導(dǎo)入數(shù)據(jù)庫 那怕就是簡單的獲取網(wǎng)頁內(nèi)容 cURL 是一個(gè)功能強(qiáng)大的PHP庫 本文主要講述如果使用這個(gè)PHP庫

啟用 cURL 設(shè)置

首先 我們得先要確定我們的PHP是否開啟了這個(gè)庫 你可以通過使用php_info()函數(shù)來得到這一信息

﹤?phpphpinfo();?﹥

如果你可以在網(wǎng)頁上看到下面的輸出 那么表示cURL庫已被開啟

如果你看到的話 那么你需要設(shè)置你的PHP并開啟這個(gè)庫 如果你是在Windows平臺下 那么非常簡單 你需要改一改你的php ini文件的設(shè)置 找到php_curl dll 并取消前面的分號注釋就行了 如下所示

//取消下在的注釋extension=php_curl dll

如果你是在Linux下面 那么 你需要重新編譯你的PHP了 編輯時(shí) 你需要打開編譯參數(shù)——在configure命令上加上 –with curl 參數(shù)

一個(gè)小示例

如果一切就緒 下面是一個(gè)小例程

﹤?php// 初始化一個(gè) cURL 對象$curl = curl_init();

// 設(shè)置你需要抓取的URLcurl_setopt($curl CURLOPT_URL //cocre );

// 設(shè)置headercurl_setopt($curl CURLOPT_HEADER );

// 設(shè)置cURL 參數(shù) 要求結(jié)果保存到字符串中還是輸出到屏幕上 curl_setopt($curl CURLOPT_RETURNTRANSFER );

// 運(yùn)行cURL 請求網(wǎng)頁$data = curl_exec($curl);

// 關(guān)閉URL請求curl_close($curl);

// 顯示獲得的數(shù)據(jù)var_dump($data);

如何POST數(shù)據(jù)

上面是抓取網(wǎng)頁的代碼 下面則是向某個(gè)網(wǎng)頁P(yáng)OST數(shù)據(jù) 假設(shè)我們有一個(gè)處理表單的網(wǎng)址// example /sendSMS php 其可以接受兩個(gè)表單域 一個(gè)是電話號碼 一個(gè)是短信內(nèi)容

﹤?php$phoneNumber = ;$message = This message was generated by curl and php ;$curlPost = pNUMBER= urlencode($phoneNumber) MESSAGE= urlencode($message) SUBMIT=Send ;$ch = curl_init();curl_setopt($ch CURLOPT_URL // example /sendSMS php );curl_setopt($ch CURLOPT_HEADER );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_POST );curl_setopt($ch CURLOPT_POSTFIELDS $curlPost);$data = curl_exec();curl_close($ch);?﹥

從上面的程序我們可以看到 使用CURLOPT_POST設(shè)置HTTP協(xié)議的POST方法 而不是GET方法 然后以CURLOPT_POSTFIELDS設(shè)置POST的數(shù)據(jù)

   關(guān)于代理服務(wù)器

下面是一個(gè)如何使用代理服務(wù)器的示例 請注意其中高亮的代碼 代碼很簡單 我就不用多說了

﹤?php $ch = curl_init();curl_setopt($ch CURLOPT_URL // example );curl_setopt($ch CURLOPT_HEADER );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_HTTPPROXYTUNNEL );curl_setopt($ch CURLOPT_PROXY fakeproxy : );curl_setopt($ch CURLOPT_PROXYUSERPWD user:password );$data = curl_exec();curl_close($ch);?﹥ 關(guān)于SSL和Cookie

關(guān)于SSL也就是HTTPS協(xié)議 你只需要把CURLOPT_URL連接中的//變成//就可以了 當(dāng)然 還有一個(gè)參數(shù)叫CURLOPT_SSL_VERIFYHOST可以設(shè)置為驗(yàn)證站點(diǎn)

關(guān)于Cookie 你需要了解下面三個(gè)參數(shù)

CURLOPT_COOKIE 在當(dāng)面的會話中設(shè)置一個(gè)cookie

CURLOPT_COOKIEJAR 當(dāng)會話結(jié)束的時(shí)候保存一個(gè)Cookie

CURLOPT_COOKIEFILE Cookie的文件

HTTP服務(wù)器認(rèn)證

最后 我們來看一看HTTP服務(wù)器認(rèn)證的情況

﹤?php $ch = curl_init();curl_setopt($ch CURLOPT_URL // example );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_HTTPAUTH CURLAUTH_BASIC);curl_setopt(CURLOPT_USERPWD [username]:[password] )

$data = curl_exec();curl_close($ch);?﹥

關(guān)于其它更多的內(nèi)容 請參看相關(guān)的cURL手冊 lishixinzhi/Article/program/PHP/201311/21491

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

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

是打開 本地網(wǎng)頁還是打開網(wǎng)上網(wǎng)頁

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

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

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

//個(gè)人認(rèn)為curl好一點(diǎn),因?yàn)閏url可以模擬瀏覽器,有的網(wǎng)站會過濾機(jī)器人

//1.php代碼

//把網(wǎng)頁讀入一個(gè)字符串

$contone?=?file_get_contents('url');

print_r($contone);

//curl采集

#初始化curl??(true/false)

$ch=curl_init();

#請求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)頁內(nèi)容

print_r($content);

//下面是整個(gè)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;

#是否返回響應(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ā)送請求,傳入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;????//請求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;

}

}

我用PHP模擬登陸了然后抓取了數(shù)據(jù) 怎么提前內(nèi)容保存到數(shù)據(jù)庫,看下面截圖是抓取的網(wǎng)頁數(shù)據(jù)

登陸后抓取所有的html代碼。

然后通過正則匹配html標(biāo)簽來獲取自己需要的東西,最主要的是你獲取到html源碼后,想要什么不就是看你需求了嘛,正則有問題可以繼續(xù)問我。

PHP抓取別人網(wǎng)頁數(shù)據(jù),可以存儲在本地MEMCACHE里面嗎

在有足夠內(nèi)存的情況下,都是可以的;文字可以直接用鍵值對;圖片這些可以先用ob_get_contents轉(zhuǎn)換成對象再保存。大家經(jīng)常CURL抓取別人的數(shù)據(jù) 特別是經(jīng)常改動的 ,比如比分比如賽事預(yù)告之類的。可能抓取的只是當(dāng)天有空,這樣的還有比尋抓取后放在自己DB上嗎? 我覺得放在內(nèi)存上比較好,然后設(shè)置緩存時(shí)間 就是下次CURL的時(shí)間, 假如首頁一個(gè)區(qū)域需要用到抓取的數(shù)據(jù),那這樣緩存命中率也就百分之100了

php怎么抓取其它網(wǎng)站數(shù)據(jù)

可以用以下4個(gè)方法來抓取網(wǎng)站 的數(shù)據(jù):

1. 用 file_get_contents 以 get 方式獲取內(nèi)容:

?

$url = '';

$html = file_get_contents($url);

echo $html;

2. 用fopen打開url,以get方式獲取內(nèi)容

?

$url = '';

$fp = fopen($url, 'r');

stream_get_meta_data($fp);

$result = '';

while(!feof($fp))

{

$result .= fgets($fp, 1024);

}

echo "url body: $result";

fclose($fp);

3. 用file_get_contents函數(shù),以post方式獲取url

?

$data = array(

'foo'='bar',

'baz'='boom',

'site'='',

'name'='nowa magic');

$data = http_build_query($data);

//$postdata = http_build_query($data);

$options = array(

'http' = array(

'method' = 'POST',

'header' = 'Content-type:application/x-www-form-urlencoded',

'content' = $data

//'timeout' = 60 * 60 // 超時(shí)時(shí)間(單位:s)

)

);

$url = "";

$context = stream_context_create($options);

$result = file_get_contents($url, false, $context);

echo $result;

4、使用curl庫,使用curl庫之前,可能需要查看一下php.ini是否已經(jīng)打開了curl擴(kuò)展

$url = '';

$ch = curl_init();

$timeout = 5;

curl_setopt ($ch, CURLOPT_URL, $url);

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$file_contents = curl_exec($ch);

curl_close($ch);

echo $file_contents;


名稱欄目:php抓取網(wǎng)頁數(shù)據(jù)保存 php自動采集網(wǎng)頁內(nèi)容
網(wǎng)頁鏈接:http://weahome.cn/article/docjcdg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部