㈠ php怎樣抓取網頁代碼中動態(Ajax)顯示的數據
你是想抓別人網頁上ajax動態載入的數據吧? 1、要找到它的ajax載入的URL地址 2、利用PHP的file_get_contents($url)函數讀取那個url地址。 3、對抓取到的內容進行分析或正則過濾。
㈡ PHP抓取網頁指定內容
<?php
/*
* 如下: 方法有點笨
* 抓取網頁內容用 PHP 的正則
* 用JS每隔5分鍾刷新當前頁面---即重新獲取網頁內容
*
* 註: $mode中--<title></title>-更改為所需內容(如 $mode = "#<a(.*)</a>#";>獲取所有鏈接)
*
* window.location.href="http://localhost//refesh.php";中的http://localhost//refesh.php
* 更改為自己的URL----作用:即刷新當前頁面
*
* setInterval("ref()",300000);是每隔300000毫秒(即 5 * 60 *1000 毫秒即5分鍾)執行一次函數 ref()
*
* print_r($arr);輸出獲得的所有內容 $arr是一個數組 可根據所需輸出一部分(如 echo $arr[1][0];)
* 若要獲得所有內容 可去掉
* $mode = "#<title>(.*)</title>#";
if(preg_match_all($mode,$content,$arr)){
print_r($arr);
echo "<br/>";
echo $arr[1][0];
}
再加上 echo $content;
*/
$url = "http://www..com"; //目標站
$fp = @fopen($url, "r") or die("超時");
$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="http://localhost//refesh.php";
}
setInterval("ref()",300000);
//-->
</script>
㈢ php curl 大量數據採集
這個需要配合js,打開一個html頁面,首先js用ajax請求頁面,返回第一個頁面信息確定處理完畢(ajax有強制同步功能),ajax再訪問第二個頁面。(或者根據伺服器狀況,你可以同時提交幾個URL,跑幾個相同的頁面)
參數可以由js產生並傳遞url,php後台頁面根據URL抓頁面。然後ajax通過php,在資料庫或者是哪裡設一個標量,標明檢測到哪裡。由於前台的html頁面執行多少時候都沒問題,這樣php的內存限制和執行時間限制就解決了。
因為不會浪費大量的資源用一個頁面來跑一個瞬間500次的for循環了。(你的500次for循環死了原因可能是獲取的數據太多,大過了php限制的內存)
不過印象中curl好像也有強制同步的選項,就是等待一個抓取後再執行下一步。但是這個500次都是用一個頁面線程處理,也就是說肯定會遠遠大於30秒的默認執行時間。
㈣ php抓取頁面內容
<?php
$rs=file_get_contents('http://www.boc.cn/sourcedb/whpj/enindex.html');
preg_match('/<tablewidth="600"border="0"cellpadding="5"cellspacing="1"bgcolor="#EAEAEA">(.*?)</table>/sS',$rs,$match);
//print_r($match);
$rs=str_replace(array('</tr>','</td>','<tralign="center">','<tdbgcolor="#FFFFFF">'),array('|',';'),$match[1]);
//www.hi-docs.com/php/str_replace.html
$data=array();
$rs=explode('|',$rs);
foreach($rsas$key=>$item){
if($key>0){
$arr=explode(';',$item);
($a=@trim($arr[0]))&&($b=@trim($arr[5]))&&$data[]=array($a,$b);
}
}
print_r($data);
?>
㈤ phpstudy怎麼抓取網頁數據
什麼網頁數據?
是打開 本地網頁還是打開網上網頁
如果是本地網頁的話 在瀏覽器上輸入127.0.0.1或者localhost進行訪問
如果是外網我理解的是你要獲取外網的一個網頁,可以用代碼或者程序來實現
(一般稱為採集程序,或者小偷程序)
//個人認為curl好一點,因為curl可以模擬瀏覽器,有的網站會過濾機器人
//1.php代碼
//把網頁讀入一個字元串
$contone=file_get_contents('url');
print_r($contone);
//curl採集
#初始化curl(true/false)
$ch=curl_init();
#請求url地址
$params[CURLOPT_URL]='網址';
#是否返回響應頭信息
$params[CURLOPT_HEADER]=true;
#是否將結果返回
$params[CURLOPT_RETURNTRANSFER]=true;
#是否重定向
$params[CURLOPT_FOLLOWLOCATION]=true;
#偽造瀏覽器
$params[CURLOPT_USERAGENT]='Mozilla/5.0(WindowsNT5.1;rv:9.0.1)Gecko/20100101Firefox/9.0.1';
curl_setopt_array($ch,$params);
$content=curl_exec($ch);
//輸出網頁內容
print_r($content);
//下面是整個curl採集類
classCurl{
#採集的地址
public$url;
#匹配的正則
public$preg;
#模擬登錄需要的用戶名
public$username;
#模擬登錄需要的密碼;
public$pwd;
#cookie存儲的路徑
private$cookie_path;
#採集數據的字元集
public$charset;
/**
*構造方法,初始化採集基本信息
*@param$url採集的url
*@param$preg匹配的正則
*@paramstring$username用戶名
*@paramstring$pwd密碼
*@paramstring$charset字元集
*/
publicfunction__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;
}
}
/*
*採集數據,非表單提交方式,直接採集的
*/
publicfunctionget_info(){
#初始化curl
$ch=curl_init();
#請求url地址
$params[CURLOPT_URL]=$this->url;
#是否返回響應頭信息
$params[CURLOPT_HEADER]=true;
#是否將結果返回
$params[CURLOPT_RETURNTRANSFER]=true;
#是否重定向
$params[CURLOPT_FOLLOWLOCATION]=true;
#偽造瀏覽器
$params[CURLOPT_USERAGENT]='Mozilla/5.0(WindowsNT5.1;rv:9.0.1)Gecko/20100101Firefox/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');//產生一個cookie文件
//$params[CURLOPT_COOKIEJAR]=$cookie_jar;//寫入cookie信息
//setcookie('cookie_jar',$cookie_jar);//保存cookie路徑
//}
#開始發送請求,傳入curl參數
curl_setopt_array($ch,$params);
$content=curl_exec($ch);
preg_match_all($this->preg,$content,$arr);
return$arr;
}
/**
*採集遠程圖片
*@param$img圖片路徑是一個數組
*@param$save_path圖片保存在你本地的路徑
*@returnbool
*/
publicfunctionget_img($img,$save_path){
for($i=0;$i<count($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;
}
//登錄後採集
publicfunctionregister_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;//是否將結果返回
$params[CURLOPT_FOLLOWLOCATION]=true;//是否重定向
$params[CURLOPT_USERAGENT]='Mozilla/5.0(WindowsNT5.1;rv:9.0.1)Gecko/20100101Firefox/9.0.1';
$postfields='';
//將表單要提交的數據編程URL拼接方式
foreach($infoas$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');//產生一個cookie文件
$params[CURLOPT_COOKIEJAR]=$cookie_jar;//寫入cookie信息
setcookie('cookie_jar',$cookie_jar);//保存cookie路徑
}
curl_setopt_array($ch,$params);//傳入curl參數
$content=curl_exec($ch);//執行
return$content;
}
}
㈥ PHP怎樣抓取網頁代碼中動態顯示的數據
你是想抓別人網頁上ajax動態載入的數據吧?
1、要找到它的ajax載入的URL地址
2、利用PHP的file_get_contents($url)函數讀取那個url地址。
3、對抓取到的內容進行分析或正則過濾。
㈦ 用PHP獲取網頁部分數據
如果你要
和
之間的所有源碼,用 preg_match 就可以,不用preg_match_all ,如果你要裡面的所有的
標簽中的內容,可以用preg_match_all //提取所有代碼 $pattern = '/
(.+?)
/is'; preg_match($pattern, $string, $match); //$match[0] 即為
和
之間的所有源碼 echo $match[0]; //然後再提取
之間的內容 $pattern = '/(.+?)li>/is'; preg_match_all($pattern, $match[0], $results); $new_arr=array_unique($results[0]); foreach($new_arr as $kkk){ echo $kkk; }
㈧ php中想要抓取網頁中某一段的數據的代碼
<?php
$url='abc.com/';
$data=get_file($url);
$pattern='你的內容正則表達式';
perg_match($pattern,$data,$match);
print_r($match);
function get_file($url)
{
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
return $data;
}
?>