簡體   English   中英

簡單的html dom解析器無法解析所有頁面

[英]Simple html dom parser can`t parse all page

我需要從該網站的中心列獲取信息

(我需要電話號碼)

我正在使用SimpleHTML dom解析器,並嘗試了一些curl方法,但是它總是為我提供沒有該中心列的html源代碼!

我了解使用此代碼:

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

我需要說我今天可以這樣做還是不可以取消此訂單。 對不起,我的英語不好,謝謝。

請注意字符集轉換的請求標頭和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);
    }

?>

上面的源代碼已經過全面測試,可以正常工作。

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

要在Google的操作系統搜索上安裝curl,請在Ubuntu上使用sudo apt-get install curl libcurl3 php5-curl並重新啟動apache。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM