2012-08-24 40 views
0

我需要從that site簡單的HTML DOM解析器解析不能老是所有頁面

中心柱獲得的信息(我需要準確的電話號碼)

我真的使用SimpleHTML DOM解析器,並試圖一些捲曲方法,但它總是給我沒有中央列的HTML源!

我瞭解,使用此代碼:

$html = file_get_html('http://vashmagazin.ua/cat/catalog/?rub=100&subrub=1'); 
$str = $html->Save(); 
echo $str; 

我必須說,我能做到這一點還是不是今天或我將失去這個順序。 對不起,我的英語不好,謝謝。

回答

0

請注意字符集轉換的請求標題和iconv。

如果你沒有在utf-8中從windows-1251轉換字符串,preg_match將失敗。

轉換後我用一個簡單的正則表達式從整個頁面中提取電話號碼。

<?php 

    $url = 'http://vashmagazin.ua/cat/catalog/?rub=100&subrub=1'; 

    $ch = curl_init(); 
    $request_headers = array 
     (
      "Accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 
      "Accept-Charset" => "windows-1251,utf-8;q=0.7,*;q=0.3", 
     ); 

    $header = array(); 
    foreach ($request_headers as $key => $value) 
     $header[] = "{$key}: {$value}"; 

    curl_setopt($ch, CURLOPT_HTTPGET, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7'); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

    $html = curl_exec($ch); 
    curl_close($ch); 

    $html = iconv("windows-1251", "UTF-8", $html); 

    $matches = array(); 
    $pattern = '/\([0-9]{3}\)[0-9]{3,}\-[0-9]+/us'; 

    if (preg_match_all($pattern, $html, $matches)) 
    { 
     var_dump($matches); 
    } 

?> 

上面的源代碼已經過完全測試,並且完全正常工作。

如果您無法安裝捲曲庫,請嘗試用file_get_contents($ url)替換捲曲塊。

在你的操作系統上安裝curl在谷歌搜索,在Ubuntu上使用sudo apt-get install curl libcurl3 php5-curl並重新啓動apache。

+0

致命錯誤:調用未定義的函數curl_init()在第5行的F:\ xampp \ htdocs \ mag \ index.php ---也許我需要一些庫來包含? (除了我已經包含的簡單html dom) – Trimod

+0

你必須安裝curl庫,在ubuntu中你可以用下面的命令安裝它:sudo apt-get install curl libcurl3 php5-curl(否則,你可以直接使用file_get_contents($ url)...代碼已經過測試,並且在100%的環境下工作 –

+0

謝謝!它工作的很好,你救了我:) – Trimod