0

そのサイトの中央の列から情報を取得する必要があり ます

(正確に電話番号が必要です)

SimpleHTML domパーサーを使用していて、curlメソッドを試していましたが、中央の列がなくても常にhtmlソースが表示されます。

私はこのコードを使用することを理解しました:

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

私は今日これをすることができるかどうかを言う必要があります、さもないと私はこの注文を失うでしょう。英語が下手でごめんなさい、ありがとう。

4

1 に答える 1

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);
    }

?>

上記のソースコードは完全にテストされ、完全に機能しています。

curlライブラリをインストールできない場合は、curlブロックをfile_get_contents($ url)に置き換えてみてください。

Googleのオペレーティングシステム検索にcurlをインストールするには、Ubuntuでsudo apt-get install curl libcurl3 php5-curlを使用して、apacheを再起動します。

于 2012-08-24T16:13:13.187 に答える