導航:首頁 > 編程語言 > php正則抓取網頁

php正則抓取網頁

發布時間:2023-02-11 07:20:10

1. php正則表達式怎麼抓取網頁數據

會用正則就會抓取。
不會正則,一時半會也教不錯。
不過,推薦你使用phpQuery這個框架,用jQuery的使用器來抓取數據。

2. 用PHP正則表達式提取頁面內容

<?php
$theurl="http://www.kitco.cn/cn/";
if (!($contents = file_get_contents($theurl)))
{
echo 'Could not open URL';
exit;
}

/*
$contents=preg_replace('/<.+?>/', '', $contents);
*/

if (preg_match("/<td class=\"tableHeader\" align=\"left\">原油價格([^^]*?)<\/tr>/u",$contents,$matches))
{
print "A match was found:".strip_tags($matches[0]);
} else {
print "A match was not found.<br />";
}
?>

試試這樣
------------------------------------
呵呵,上邊這段已經把你那行注釋掉了,先找到唯一的一段代碼,取出來你想要的以後以後,再去掉標簽,你運行一下試試
運行結果:
A match was found:原油價格 68.11 +0.95
應該是你想要的結果吧?

3. PHP如何正則表達式提取網頁內容

如果你要<div class="nav" monkey="nav">和<div class="head-ad">之間的所有源碼,用 preg_match 就可以,不用preg_match_all ,如果你要裡面的所有的 <li></li>標簽中的內容,可以用preg_match_all

//提取所有代碼
$pattern = '/<div class="nav" monkey="nav">(.+?)<div class="head-ad">/is';
preg_match($pattern, $string, $match);
//$match[0] 即為<div class="nav" monkey="nav">和<div class="head-ad">之間的所有源碼
echo $match[0];

//然後再提取<li></li>之間的內容
$pattern = '/<li.*?>(.+?)<\/li>/is';

preg_match_all($pattern, $match[0], $results);
$new_arr=array_unique($results[0]);

foreach($new_arr as $kkk){
echo $kkk;

}

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

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

可以用以下4個方法來抓取網站 的數據:

1. 用 file_get_contents 以 get 方式獲取內容:
?

$url = 'http://localhost/test2.php';
$html = file_get_contents($url);
echo $html;

2. 用fopen打開url,以get方式獲取內容
?

$url = 'http://localhost/test2.php';
$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函數,以post方式獲取url
?

$data = array(
'foo'=>'bar',
'baz'=>'boom',
'site'=>'www.jb51.net',
'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 // 超時時間(單位:s)
)
);

$url = "http://localhost/test2.php";
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);

echo $result;

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

$url = 'http://localhost/test2.php?site=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);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;

閱讀全文

與php正則抓取網頁相關的資料

熱點內容
如何用app覆蓋全部曲庫 瀏覽:602
變異布林源碼 瀏覽:684
表格加密設置列印區域 瀏覽:437
卡耐基pdf下載 瀏覽:922
現在最流行的單片機 瀏覽:88
機頂盒刷機源碼 瀏覽:985
編碼pdf下載 瀏覽:944
隔壁同學app怎麼 瀏覽:299
c語言宏命令 瀏覽:542
php卡死源碼 瀏覽:574
time庫中的clock函數python 瀏覽:989
cad視覺移動命令怎麼打開 瀏覽:821
安卓java調用python 瀏覽:395
java標准時間 瀏覽:137
華為伺服器湖北渠道商雲主機 瀏覽:30
韓式面部護理解壓視頻 瀏覽:301
pdf換成jpg圖片 瀏覽:897
dh加密演算法 瀏覽:107
安卓手機如何隱藏微信信息提示 瀏覽:632
nodejs解壓縮 瀏覽:262