web-dev-qa-db-ja.com

PHP Simple HTML DOM Parserを使用してクラスでdivを検索します

私は言及されたパーサーから始めて、どういうわけか最初から直接問題を実行しています。

このチュートリアルを参照:

http://net.tutsplus.com/tutorials/php/html-parsing-and-screen-scraping-with-the-simple-html-dom-library/

ClearBoth Boxクラスのdivのコンテンツをソースコードで簡単に見つけたい

Curlを使用してコードを取得し、シンプルなHTML DOMオブジェクトを作成します。

$cl = curl_exec($curl);  
$html = new simple_html_dom();
$html->load($cl);

次に、divのコンテンツをdivsと呼ばれる配列に追加します。

$divs = $html->find('div[.ClearBoth Box]');

しかし、今、$ divをprint_rすると、ソースコードがdiv内にないという事実にもかかわらず、はるかに多くのことが得られます。

このような:

Array
(
    [0] => simple_html_dom_node Object
        (
            [nodetype] => 1
            [tag] => br
            [attr] => Array
                (
                    [class] => ClearBoth
                )

            [children] => Array
                (
                )

            [nodes] => Array
                (
                )

            [parent] => simple_html_dom_node Object
                (
                    [nodetype] => 1
                    [tag] => div
                    [attr] => Array
                        (
                            [class] => SocialMedia
                        )

                    [children] => Array
                        (
                            [0] => simple_html_dom_node Object
                                (
                                    [nodetype] => 1
                                    [tag] => iframe
                                    [attr] => Array
                                        (
                                            [id] => ShowFacebookButtons
                                            [class] => SocialWeb FloatLeft
                                            [src] => http://www.facebook.com/plugins/xxx
                                            [style] => border:none; overflow:hidden; width: 250px; height: 70px;
                                        )

                                    [children] => Array
                                        (
                                        )

                                    [nodes] => Array
                                        (
                                        )

$ divにdivのコードが含まれていない理由がわかりません。

これはサイトのソースコードの例です:

<div class="ClearBoth Box">
          <div>
<i class="Icon SmallIcon ProductRatingEnabledIconSmall" title="gute peppige Qualität: Sehr empfehlenswert"></i>
<i class="Icon SmallIcon ProductRatingEnabledIconSmall" title="gute peppige Qualität: Sehr empfehlenswert"></i>
<i class="Icon SmallIcon ProductRatingEnabledIconSmall" title="gute peppige Qualität: Sehr empfehlenswert"></i>
<i class="Icon SmallIcon ProductRatingEnabledIconSmall" title="gute peppige Qualität: Sehr empfehlenswert"></i>
<i class="Icon SmallIcon ProductRatingEnabledIconSmall" title="gute peppige Qualität: Sehr empfehlenswert"></i>

              <strong class="AlignMiddle LeftSmallPadding">gute peppige Qualität</strong> <span class="AlignMiddle">(17.03.2013)</span>
          </div>
          <div class="BottomMargin">
            gute Verarbeitung, schönes Design,
          </div>
        </div>

何が悪いのですか?

5
Owl

クラスでdivを取得するための正しいコードは次のとおりです。

$ret = $html->find('div.foo');
//OR
$ret = $html->find('div[class=foo]');

基本的に、CSSセレクターを使用していたのと同じように要素を取得できます。

ソース: http://simplehtmldom.sourceforge.net/manual.htm
HTML要素を見つける方法は?セクション、タブ詳細

7
tampe125
$html = new simple_html_dom();   
$html->load($output); 
$items = $html->find('div.youclassname',0)->children(1)->outertext; 
print_r($items);
6
Mohit

次の要素を見つけるには:DIV -> class(product-inner clearfix) -> class(price)次のXPathを使用できます。

foreach($html->find('div[class=product-inner  clearfix]') as $element){
        $itemPrice = $element->find('.price',0)->plaintext;
        echo $itemPrice;
    }
0
Hashan Chanaka