導航:首頁 > 編程語言 > php採集網頁數據

php採集網頁數據

發布時間:2022-07-29 20:41:00

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擴
展。

閱讀全文

與php採集網頁數據相關的資料

熱點內容
微信位置可以加密嗎 瀏覽:466
演算法蠻力法 瀏覽:436
隨機排練命令 瀏覽:147
python多進程並發 瀏覽:41
安卓軟體安裝如何躲避安全檢測 瀏覽:647
奇幻潮翡翠台源碼百度雲盤 瀏覽:187
什麼軟體可以免費pdf轉word 瀏覽:15
php正則表達式大全 瀏覽:394
androidntp時間 瀏覽:299
輪機長命令簿英文 瀏覽:148
oppo鈴聲設置被加密怎麼處理 瀏覽:548
粵苗app圖形驗證碼怎麼填 瀏覽:899
管家婆架設雲伺服器 瀏覽:254
php的登錄界面代碼 瀏覽:997
php開發客戶端 瀏覽:998
theisle測試服怎麼搜伺服器 瀏覽:447
廣播PDF 瀏覽:218
單片機編程300例匯編百度 瀏覽:35
騰訊雲連接不上伺服器 瀏覽:223
不能用來表示演算法的是 瀏覽:861