狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

php抓取網頁數據的技術要點

admin
2013年2月25日 23:46 本文熱度 5133




php中一般都是去抓取網頁數據?如想把http://mp3.baidu.com/ 歌曲500TOP把抓下來,如何實現?


該文章在 2013/2/25 23:46:42 編輯過

全部評論1

admin
2013年2月25日 23:52

問題中提到需要用PHP實現,個人總結整理了一下,有以下幾種常用的用php抓取網頁中的內容的方法,供您參考。

1.使用file_get_contents

  
  1. <?php      
  2. $url = "http://www.34ways.com";   
  3. $contents = file_get_contents($url);   
  4. //如果出現中文亂碼使用下面代碼   
  5. //$getcontent = iconv("gb2312", "utf-8",$contents);    
  6. echo $contents;   
  7. ?>

2.使用curl

  
  1. <?php      
  2. $url = "http://www.34ways.com";   
  3. $ch = curl_init();   
  4. $timeout = 5;   
  5. curl_setopt($ch, CURLOPT_URL, $url);   
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
  7. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);   
  8. //在需要用戶檢測的網頁里需要增加下面兩行   
  9. //curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);   
  10. //curl_setopt($ch, CURLOPT_USERPWD, US_NAME.":".US_PWD);   
  11. $contents = curl_exec($ch);   
  12. curl_close($ch);   
  13. echo $contents;   
  14. ?>

3.使用fopen->fread->fclose

  
  1. <?php      
  2. $handle = fopen ("http://www.34ways.com", "rb");   
  3. $contents = "";   
  4. do {   
  5.    $data = fread($handle, 1024);   
  6.    if (strlen($data) == 0) {   
  7.    break;   
  8.    }   
  9.    $contents .= $data;   
  10. } while(true);   
  11. fclose ($handle);   
  12. echo $contents;   
  13. ?>

最后提醒幾點:
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擴展。

 
評論 (1)鏈接 • 2012-07-10
  • 多謝您的解答~ – 張鵬飛 2012-07-10

先file_get_contents("http://mp3.baidu.com/"),取一個html的結果 然后從html 利用正則找規律 來取

頁面只給了ID, 由flash查找的.如果想知道怎么查找的,可以反編譯SWF.
有其它的音樂網站列出了baidu的排行榜,也許從那里抓更容易.

只是舉了個例子,抓去網頁數據無非就兩步:1、抓取;2:分析
抓取分幾種情況:1、普通字符串,就是普通網頁源碼,用file_get_contents或curl抓取,2、有序數據如xml,可以用simplexml_load_file抓取
分析:如果是第二種情況,就按照xml數據來遍歷處理好了。 如果是第一種情況,用preg_match來匹配目標數據

  • 只說下思路,這樣的代碼網上太多,就不多說了。
    PHP實現的話,file_get_contents網頁內容下來,然后用正則進行分析得到mp3文件地址到一個文件里面,然后用迅雷批量下載。
    PHP下載mp3 - -| 你懂的

    <?php
    /*
    * 如下: 方法有點笨
    * 抓取網頁內容用 PHP 的正則
    * 用JS每隔5分鐘刷新當前頁面---即重新獲取網頁內容
    *
    * 注: $mode中--<title></title>-更改為所需內容(如 $mode = "#<a(.)</a>#";>獲取所有鏈接) * * window.location.href="http://localhost/baidu/refesh.php";中的http://localhost/baidu/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.baidu.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[0];
    }
    ?>
    <script language="JavaScript" type="text/javascript">
    <--
    function ref(){
    window.location.href="http://localhost/baidu/refesh.php";
    }
    setInterval("ref()",300000);
    //-->
    </script>

    詳細匯總 http://blog.163.com/kong_qing_feng/blog/static/186228032009418144099/

     
    關鍵字查詢
    相關文章
    正在查詢...
    點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
    點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
    點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
    點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
    Copyright 2010-2025 ClickSun All Rights Reserved