用PHP自帶函數就可以實現,首先要過去對方的網頁信息,用
創新互聯網站建設公司,提供成都網站設計、成都網站制作,網頁設計,建網站,PHP網站建設等專業做網站服務;可快速的進行網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,是專業的做網站團隊,希望更多企業前來合作!
file_get_contents();參數是對方的URL地址,這個函數返回是一個字符串你想要的東西就在這個字符串中了
接下來就可以針對這個字符串做處理了,說下思路,正如你這個問題想獲取到航班號起飛時間,在這個網頁中應該有很多相同的標簽元素,它們都有共同點,用
用正則表達式preg_match();或者是
preg_match_all();這兩個函數它們都返回一個數組,這個數組存的就是你要的航班號和起飛時間,那么相同信息的數組就會出現了,然后在對這個數組進行分析找到你要的某個值或全部的值
獲取信息要用到的3個函數是:
file_get_contents();
preg_match();
preg_match_all();
$url = "網站地址目錄";
$queryServer = curl_init();
curl_setopt($queryServer, CURLOPT_URL, $url);
curl_setopt($queryServer, CURLOPT_HEADER, 0);
curl_setopt($queryServer, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($queryServer, CURLOPT_RETURNTRANSFER, true);
curl_setopt($queryServer, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($queryServer, CURLOPT_TIMEOUT, 30);
$html = curl_exec($queryServer);
$html = iconv('UTF-8','GBK//IGNORE',$html); //如果你需要是的數據是utf-8編碼的,這一行可以注銷,如果需要gbk編碼的,請保留.如果出現亂碼,就是一行的問題,你自己調著試吧
//echo $holder;exit; 此處可以輸出來測試.
$html = str_replace(array("\n","\r","\t"),"",$html);
$preg = '/table\s+width=\"800\"[^]+(.*?)\/table/';
preg_match_all($preg,$html,$out);
//匹配每行
preg_match_all('/tr[^]+(.*?)\/tr/',$out[1][0],$tr);
//匹配每個td
$result = array();
$match = '/td.+([^]+)\/td/U';
foreach( $tr[0] as $key = $value ){
preg_match_all($match,$value,$arr);
$result[] = $arr[1];
}
//輸出測試,$result就是你要的數據,至于你要怎么輸出顯示格式,那就隨心調就好了。
foreach( $result as $key = $value ){
echo implode("\t",$value);
echo "br";
}
exit;
?php
/*
* 如下: 方法有點笨
* 抓取網頁內容用 PHP 的正則
* 用JS每隔5分鐘刷新當前頁面---即重新獲取網頁內容
*
* 注: $mode中--title/title-更改為所需內容(如 $mode = "#a(.*)/a#";獲取所有鏈接)
*
* window.location.href="";中的
* 更改為自己的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 = ""; //目標站
$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="";
}
setInterval("ref()",300000);
//--
/script
PHP Simple HTML DOM或者phpQuery可以直接取得某些div中的內容,里面有幾個例子專門針對于網頁抓取,調整好抓取頻次,舍去已經存在的數據,你可以參考下
;id=57class=2
剛吃完午飯吧,來幫你實現一下吧。記得加分哦。
$url = "";
$queryServer = curl_init();
curl_setopt($queryServer, CURLOPT_URL, $url);
curl_setopt($queryServer, CURLOPT_HEADER, 0);
curl_setopt($queryServer, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($queryServer, CURLOPT_RETURNTRANSFER, true);
curl_setopt($queryServer, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($queryServer, CURLOPT_TIMEOUT, 30);
$html = curl_exec($queryServer);
$html = iconv('UTF-8','GBK//IGNORE',$html); //如果你需要是的數據是utf-8編碼的,這一行可以注銷,如果需要gbk編碼的,請保留.如果出現亂碼,就是一行的問題,你自己調著試吧
//echo $holder;exit; 此處可以輸出來測試.
$html = str_replace(array("\n","\r","\t"),"",$html);
$preg = '/table\s+width=\"800\"[^]+(.*?)\/table/';
preg_match_all($preg,$html,$out);
//匹配每行
preg_match_all('/tr[^]+(.*?)\/tr/',$out[1][0],$tr);
//匹配每個td
$result = array();
$match = '/td.+([^]+)\/td/U';
foreach( $tr[0] as $key = $value ){
preg_match_all($match,$value,$arr);
$result[] = $arr[1];
}
//輸出測試,$result就是你要的數據,至于你要怎么輸出顯示格式,那就隨心調就好了。
foreach( $result as $key = $value ){
echo implode("\t",$value);
echo "br";
}
exit;
簡單的分了幾個步驟:
1、確定采集目標
2、獲取目標遠程頁面內容(curl、file_get_contents)
3、分析頁面html源碼,正則匹配你需要的內容(preg_match、preg_match_all),這一步最為重要,不同頁面正則匹配規則不一樣
4、入庫
文章標題:php抓取某個網站的數據,php爬取數據
分享URL:http://vcdvsql.cn/article0/hedsio.html
成都網站建設公司_創新互聯,為您提供靜態網站、微信小程序、虛擬主機、網站導航、建站公司、網站營銷
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯