2016-07-13 6 views
0

div class="className"のコンテンツをウェブサイトから取得し、データベースに保存しようとしています。このコードブロックを使用しますが、var_dumpは何も表示しません。私はそれを全く経験していないので私を助けてください。PHPを使用してdivクラスのコンテンツを取得し、データベーステーブルに保存

コード:

<?php 

    $doc = new DOMDocument(); 
    $doc->loadHTMLFile('http://www.someLink.com'); 

    foreach($doc->getElementsByClassName('Classname') as $item){ 
    $class = $item->getAttribute('div'); 
    var_dump($class); 
} 

?> 

答えて

1

DOMDocument->のgetElementsByClassNameが存在し機能していないようです。

そうのようなXPathを使用して代わりにしてみてください。

<?php 
    $doc = new DOMDocument(); 
    $doc->loadHTMLFile('http://www.image-plus.co.uk/'); 

    $finder = new DomXPath($doc); 
    $class_name = "green"; 
    $nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $class_name ')]"); 

    $tmp_dom = new DOMDocument(); 
    foreach ($nodes as $node) 
    { 
     $tmp_dom->appendChild($tmp_dom->importNode($node,true)); 
    } 
    $innerHTML.=trim($tmp_dom->saveHTML()); 
    echo $innerHTML; 
?> 

編集:固定間違い

+0

を発見したdiv要素のアレイを作成することができる小さな関数を書かれています。これはコンテンツ全体ですか?それをデータベーステーブルに保存することは可能ですか?ありがとうございます! – platanas20

+0

私は自分のミスを変える前にコードをつかんでいるかもしれません!上記の正確なコードを実行すると、テキスト行が表示されますか? –

+0

それはうまくいったようですが、私は 'charset'を' UTF-8'にchabgeする必要があります... – platanas20

0

私はdiv要素からコンテンツを取得している一つの例を作成しました。このコンテンツはデータベースに簡単に保存できます。

$html = file_get_html('Your website'); 
$element = $html->find('div[id=Your id]', 0); 
echo $element; 
0

私は `オブジェクト(DOMElementの)#3(0)`結果としてこれを取得クラス内

<?php 

function get_links($url,$classname) { 

    // Create a new DOM Document 
    $xml = new DOMDocument('1.0', 'UTF-8'); 

    //To remove all unnecessary errors 
    $internalErrors = libxml_use_internal_errors(true); 

    // Load the html into the DOM 
    $xml->loadHTMLFile($url); 

    $xpath = new DOMXPath($xml); 

    $classes = $xpath->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]"); 

    for ($i = $classes->length - 1; $i > -1; $i--) { 
     if(!empty($classes->item($i)->firstChild->nodeValue)){ 
      $result[] = $classes->item($i)->firstChild->nodeValue; 
     } 
    } 
    // Restore error level 
    libxml_use_internal_errors($internalErrors); 

    return $result; 

} 


    $url = 'http://www.example.com'; 
    $classname ="someclass"; 
    $rows=get_links($url,$classname); 

    var_dump($rows); // YOu will get an array of the contents that you can store in database 
    foreach($rows as $row){ 
    //insert DB command 
    } 

?> 
+0

私はこれをresult 'array(1){[0] => string(7)" "}これは正常ですか? – platanas20

+0

あなたが試しているURLとクラス名を教えてもらえますか? –

+0

私はこれを試して、配列 '$ url = 'http://www.sify.com'で9つの結果を得ました。 $ classname = "description2"; $行= get_links($ url、$ classname); var_dump($ rows); ' –

関連する問題