㈠ php正則表達式怎麼抓取網頁數據
會用正則就會抓取。
不會正則,一時半會也教不錯。
不過,推薦你使用phpQuery這個框架,用jQuery的使用器來抓取數據。
㈡ php獲取網頁源碼內容有哪些辦法
可以參考以下幾種方法:
方法一: file_get_contents獲取
<span style="white-space:pre"></span>$url="http://www..com/";
<span style="white-space:pre"></span>$fh= file_get_contents
('http://www.hxfzzx.com/news/fzfj/');<span style="white-space:pre"></span>echo $fh;
拓展資料
PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。
用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
㈢ PHP怎樣抓取網頁代碼中動態顯示的數據
你是想抓別人網頁上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抓取網頁指定的內容
我給你一個思路, 代碼我也不會給的, 會被網路刪的.
抓取網上的數據, 一般用正則去匹配. 你可以匹配開頭為<div class="so_weather">的, 然後匹配結尾. 結尾盡量是這個開頭div的下一個同級div, 如<div id="asda">, 這樣. 然後得到的數據用strip_tags函數將html代碼都去了, 得到的結果就是你想要的
㈥ 用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; }
㈦ 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採集網頁部分數據的問題
這個網址的空格轉換一下:
http://sale.gb168.cn/Saleagent/Customer/Shopping/StandardDetails.aspx?StandNo=GB/T%2020819.1-2007
㈨ PHP 如何獲取到一個網頁的內容
1.file_get_contents
PHP代碼
復制代碼 代碼如下:
<?php
$url = "http://www.jb51.net";
$contents = file_get_contents($url);
//如果出現中文亂碼使用下面代碼
//$getcontent = iconv("gb2312", "utf-8",$contents);
echo $contents;
?>
2.curl
PHP代碼
復制代碼 代碼如下:
<?php
$url = "http://www.jb51.net";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//在需要用戶檢測的網頁里需要增加下面兩行
//curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
//curl_setopt($ch, CURLOPT_USERPWD, US_NAME.":".US_PWD);
$contents = curl_exec($ch);
curl_close($ch);
echo $contents;
?>
3.fopen->fread->fclose
PHP代碼
復制代碼 代碼如下:
<?php
$handle = fopen ("http://www.jb51.net", "rb");
$contents = "";
do {
$data = fread($handle, 1024);
if (strlen($data) == 0) {
break;
}
$contents .= $data;
} while(true);
fclose ($handle);
echo $contents;
?>
註:
1.
使用file_get_contents和fopen必須空間開啟allow_url_fopen。方法:編輯php.ini,設置
allow_url_fopen = On,allow_url_fopen關閉時fopen和file_get_contents都不能打開遠程文件。
2.使用curl必須空間開啟curl。方法:windows下修改php.ini,將extension=php_curl.dll前面的分
號去掉,而且需要拷貝ssleay32.dll和libeay32.dll到C:\WINDOWS\system32下;Linux下要安裝curl擴
展。