私は言及されたパーサーから始めて、どういうわけか最初から直接問題を実行しています。
このチュートリアルを参照:
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>
何が悪いのですか?
クラスでdivを取得するための正しいコードは次のとおりです。
$ret = $html->find('div.foo');
//OR
$ret = $html->find('div[class=foo]');
基本的に、CSSセレクターを使用していたのと同じように要素を取得できます。
ソース: http://simplehtmldom.sourceforge.net/manual.htm
HTML要素を見つける方法は?セクション、タブ詳細
$html = new simple_html_dom();
$html->load($output);
$items = $html->find('div.youclassname',0)->children(1)->outertext;
print_r($items);
次の要素を見つけるには: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;
}