當前位置:首頁 » 編程語言 » php抓取網頁內容

php抓取網頁內容

發布時間: 2022-09-10 23:21:23

1. php獲取網頁源碼內容有哪些辦法

1、使用file_get_contents獲得網頁源代碼。這個方法最常用,只需要兩行代碼即可,非常簡單方便。

2、使用fopen獲得網頁源代碼。這個方法用的人也不少,不過代碼有點多。

3、使用curl獲得網頁源代碼。使用curl獲得網頁源代碼的做法,往往是需要更高要求的人使用,例如當你需要在抓取網頁內容的同時,得到網頁header信息,還有ENCODING編碼的使,USERAGENT的使用等等。

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

3. 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);
?>

4. PHP獲取網頁內容的幾種方法

簡單的收集下PHP下獲取網頁內容的幾種方法:
用file_get_contents,以get方式獲取內容。
用fopen打開url,以get方式獲取內容。
使用curl庫,使用curl庫之前,可能需要查看一下php.ini是否已經打開了curl擴展。
用file_get_contents函數,以post方式獲取url。
用fopen打開url,以post方式獲取內容。
用fsockopen函數打開url,獲取完整的數據,包括header和body。

5. 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;
}
}

6. php抓取網頁源碼方法

可以使用file_get_content函數來獲取源代碼,你只需要把網站傳入這個函數,獲取後是一個字元串,你需要格式化代碼就可以了

7. php獲取指定網頁內容

一、用file_get_contents函數,以post方式獲取url

<?php

$url='http://www.domain.com/test.php?id=123';

$data=array('foo'=>'bar');

$data= http_build_query($data);

$opts=array(

'http'=>array(

'method'=>'POST',

'header'=>"Content-type: application/x-www-form-urlencoded " .

"Content-Length: " .strlen($data) ." ",

'content'=>$data

)

);

$ctx= stream_context_create($opts);

$html= @file_get_contents($url,'',$ctx);

二、用file_get_contents以get方式獲取內容

<?php

$url='http://www.domain.com/?para=123';

$html=file_get_contents($url);

echo$html;

?>

三、用fopen打開url, 以get方式獲取內容

<?php

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

$header= stream_get_meta_data($fp);//獲取報頭信息

while(!feof($fp)) {

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

}

echo"url header: {$header} <br>":

echo"url body: $result";

fclose($fp);

?>

四、用fopen打開url, 以post方式獲取內容

<?php

$data=array('foo2'=>'bar2','foo3'=>'bar3');

$data= http_build_query($data);

$opts=array(

'http'=>array(

'method'=>'POST',

'header'=>"Content-type: application/x-www-form-

urlencoded Cookie:cook1=c3;cook2=c4 " .

"Content-Length: " .strlen($data) ." ",

'content'=>$data

)

);

$context= stream_context_create($opts);

$html=fopen('http://www.test.com/zzzz.php?id=i3&id2=i4','rb',false,$context);

$w=fread($html,1024);

echo$w;

?>

五、使用curl庫,使用curl庫之前,可能需要查看一下php.ini是否已經打開了curl擴展

<?php

$ch= curl_init();

$timeout= 5;

curl_setopt ($ch, CURLOPT_URL,'http://www.domain.com/');

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,$timeout);

$file_contents= curl_exec($ch);

curl_close($ch);

echo$file_contents;

?>

8. php怎麼抓取其它網站數據

最基本的原理就是獲取該網頁的內容之後 通過正則去匹配 獲取自己想要的內容

9. 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>

熱點內容
自動編譯div 發布:2025-01-12 18:51:06 瀏覽:659
手機路由器如何登陸密碼 發布:2025-01-12 18:35:41 瀏覽:464
電光貓無法連接伺服器是什麼原因 發布:2025-01-12 18:32:58 瀏覽:512
迷你世界測試服的密碼從哪裡打開 發布:2025-01-12 18:25:32 瀏覽:110
我的世界手游tis伺服器 發布:2025-01-12 18:24:28 瀏覽:585
青海省分布式伺服器雲主機 發布:2025-01-12 18:12:03 瀏覽:476
英雄聯盟安卓手機版怎麼切換 發布:2025-01-12 18:10:53 瀏覽:381
q5尊享時尚型哪些配置 發布:2025-01-12 18:05:41 瀏覽:229
安卓版本哪裡下載 發布:2025-01-12 18:05:39 瀏覽:557
mc伺服器搭建搜不到 發布:2025-01-12 17:57:37 瀏覽:19