TShopping

 找回密碼
 註冊
搜索
查看: 2757|回復: 0

[教學] PHP抓取網頁內容解析(PHP Simple HTML DOM Parser)

[複製鏈接]
發表於 2013-7-11 22:39:22 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk Push to Twitter 
抓取網頁內容,要取得想要的資料,常要解析HTML,
如果已經會使用 jQuery 可以考慮使用 PHP Simple HTML DOM Parser 來解析。
官方網站:http://simplehtmldom.sourceforge.net/

官網有很詳盡的使用說明:http://simplehtmldom.sourceforge.net/manual.htm

使用上很簡單
先到 http://sourceforge.net/project/showfiles.php?group_id=218559 下載檔案。
解壓縮後,只須要裡面 simple_html_dom.php 這個檔。

使用時,要先取得 DOM物件。
取得 DOM物件的方式有三種:


  • 給HTML解析
    $html = str_get_html('<html><body>Hello!</body></html>');
  • 給網址解析
    $html = file_get_html('http://example.com/');
  • 給一個網頁檔
    $html = file_get_html('test.htm');
取得 DOM物件後,便可以用jQuery的選擇器語法,來取得想要的內容。
假設欲解析的HTML內容如下:
  1. <div id="list">
  2. <ul>
  3. <li>xx1</li>
  4. <li>xx2</li>
  5. </ul>
  6. <ul>
  7. <li>yy1</li>
  8. <li>yy2</li>
  9. </ul>
  10. </div>
複製代碼



解析範例:
  1. require_once('simple_html_dom.php');
  2. $html = file_get_html('http://example.com');
  3. $res=$html->find("#list ul");//抓取<div id="list">底下所有的<ul>
  4. foreach($res as $k=>$a){
  5. $b = $a->find("li");
  6. $v1 = $b[0]->plaintext;//第一次迴圈:xx1,第二次迴圈:yy1
  7. $v2 = $b[1]->plaintext;//第一次迴圈:xx2,第二次迴圈:yy2
  8. }
複製代碼



備註:



  • 若需要使用 POST 的方式取得資料,看 simple_html_dom.php 裡面 file_get_html() 的寫法,發現此函式使用 call_user_func_array(),把接收的參數傳給 file_get_contents() 取得網頁資料。所以可以參考
    http://php.net/manual/en/function.file-get-contents.php 的用法,以 POST 方式取得資料。
    範例如下:
  • [backcolor=white !important]
    1. $data=array('p1' => 'aa', 'p1' => 'bb');//POST 的資料$data_url = http_build_query($data);$data_len = strlen ($data_url);     $request = array(    'http' => array (        'method' => 'POST',        'content' => $data_url,        'header' => "Content-type: application/x-www-form-urlencoded\r\n" .        "Content-Length: " . $data_len . "\r\n"    ) );$context = stream_context_create($request);$html = file_get_html('http://example.com', false, $context);
    複製代碼


  • 類似 POST 取得資料的使用方式,官網說明提供一個使用 proxy 的使用範例。
    http://simplehtmldom.sourceforge.net/manual_faq.htm#proxy

 

臉書網友討論
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2016-12-5 06:28 , Processed in 0.053631 second(s), 22 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表