0

私はこれをいくつかの異なる方法で試しましたが、何もうまくいかないようです。(単純な HTML DOM で子セレクターを模倣する方法ですべての例を試しましたか? ) コードをそのまま使用し、ニーズに合わせて必要なもの、つまり class=xxx と URL を変更しました。

だから私はウェブページからいくつかの情報を引き出そうとしています。DOMに関する限り、操作する子はなく、xpathメソッドを使用しても何も返されませんでした。私は何か間違ったことをしていると思います。

<div id="wpp-6" class="widget popular-posts">
    <div class="widget_title">POPULAR</div><!-- Wordpress Popular Posts Plugin v2.3.2         [Widget] [daily] [regular] -->
    <ul>
        <li>
            <a href="http://link.html" title="Title of post" class="wpp-post-title">THE DATA I    WANT</a> <span class="post-stats"></span>
        </li>
        <!-- More lists -->
    </ul>
</div>

その後、約 9 個の list ステートメントがあります。助言がありますか?

4

2 に答える 2

2

PHP Simple HTML DOM Parserを使えば簡単にできます.ここからsimple_html_dom.phpファイルをダウンロードして以下のように使うだけです.

include('simple_html_dom.php');
$html=file_get_html('http://psfk.com');
foreach($html->find('div#wpp-6 ul li a') as $a){
    echo $a->innertext.'<br />';
}

出力は次のようになります (2013 年 1 月 14 日月曜日にテスト)

Google インフルエンザ マップは、米国での最悪のアウトブレイクを示しています

スコッチ テープの肖像画は人間の顔をゆがめます [写真]

検閲のオーウェルの 1984 のハイライト テーマの新しいデザイン

ヌードモデルの上に酒をろ過して作られたウォッカ [ビデオ]

サムスンがフレキシブルスクリーンを発表

マクドナルドがオーストラリアで社名変更

Samsung’ の透明な画面は未来の小売ウィンドウです [CES]

Dita Von Teese は QR コードを自分の服に直接縫い付けます

アバクロンビー&フィッチのボス、客室乗務員にプライベートジェットでボクサーとサンダルのみを着用させる

ミラーアプリは、女性が飲み続けるとどのように老化するかを示しています

linkタイトルをlikeで印刷したい場合は、<a>...</a>そのまま使用してくださいecho $a

于 2013-01-13T22:42:27.363 に答える
0

xpathを使用してからしばらく経ちましたので、これが私の解決策です。この方法でDOMツリーをトラバースし、必要な要素のIDとクラスを確認できます

<?php
    error_reporting(0); //needed because of invalid xml




    $url = "http://www.psfk.com";

    $xml = new DOMDocument("1.0", 'UTF-8'); 
    $str = file_get_contents($url);


    // Load the url's contents into the DOM 
    $xml->loadHTML($str); 



    //Loop through all divs in the dom until we find what we need 
    foreach($xml->getElementsByTagName('div') as $div) {
        if($div->getAttribute('id') == 'wpp-6' && $div->getAttribute('class') == 'widget popular-posts') {
            if($div->parentNode->getAttribute('id') == 'right') {
                foreach($div->getElementsByTagName('li') as $li) {
                    foreach($li->getElementsByTagName('a') as $link) {
                        echo $link->textContent . "<br>";;
                    }
                }
            }
        }


    }

?>
于 2013-01-13T22:42:57.723 に答える