2017-09-16 2 views
2

使用して、指定されたHTMLからのhref、画像のSRC、タイトルを取得できますか -私は、HTMLを考えるDOMDOCUMENT

<div id="testid"> 
    <h1>Test Title</h1> 
     <ul class="clearfix"> 
     <li class="anker" id="artists-A"></li> 
     <li class="first"> 
      <a href="www.test1.html" title="Test1"> 
      <span> 
      <img src="https://www.test1.de/img/test1.jpg" alt="Test1" /> 
      <span>Test1</span> 
      </span> 
      </a> 
     </li> 
     <li> 
      <a href="www.test2.html" title="Test2"> 
      <span> 
      <img src="https://www.test2.de/img/test2.jpg" alt="Test2" /> 
      <span>Test2</span> 
      </span> 
      </a> 
     </li> 
     <li class="first"> 
      <a href="www.test3.html" title="Test3"> 
      <span> 
      <img src="https://www.test1.de/img/test3.jpg" alt="Test3" /> 
      <span>Test3</span> 
      </span> 
      </a> 
     </li> 
     </ul> 
</div> 

hrefの値、IMG srcとスパンすなわちタイトルを取得する必要があります。 私はdomDocumentを使ってこれを解析していますが、正確な結果は得られません。

コード:

$doc = new DomDocument; 
$doc->validateOnParse = true; 
$doc->loadHtml(file_get_contents($url)); 
$xpath = new DOMXPath($doc); 
$nodes = $xpath->query('//[@id="testid"]/ul/li'); 
+1

使用しているコード..あなたが得る結果と期待される結果 – scaisEdge

+0

$ドキュメント=新DOMDOCUMENTを示し; $ doc-> validateOnParse = true; $ doc-> loadHtml(file_get_contents($ url)); \t $ xpath =新しいDOMXPath($ doc);\t $ nodes = $ xpath-> query( '// * [@ id = "testid"]/ul/li'); – akash99

+0

質問を更新してcommenにコードを追加しないでください(このコードを読むのは簡単ではありません) – scaisEdge

答えて

1

ここでは、DOMDocumentを使用しています。今のところ私はahrefimgsrcを集めていますので、さらに多くのタグを追加できます。

Try this code snippet here

$domDocument = new DOMDocument(); 
$domDocument->loadHTML($string); 

$domXPath = new DOMXPath($domDocument); 
$results = $domXPath->query("//div[@id='testid']");//querying div with id="testid" 
$results = $domXPath->query("//a|//img",$results->item(0))//querying resultant div for a and img 
$data=array(); 
foreach($results as $result){ 
    if($result->tagName=="a")//checking for anchor tags 
    { 
     $data["a"][]=array(
      "href"=>$result->getAttribute("href"), 
      "title"=>$result->getAttribute("title") 
     ); 
    } 
    elseif($result->tagName=="img")//checking for image tags 
    { 
     $data["img"][]=$result->getAttribute("src"); 
    } 
} 
print_r($data); 
+0

testidで結果を得るには – akash99

+0

@ akash99私の投稿を更新しました。 –

+1

ありがとうございました – akash99

0

私はあなたがSimpleHtmlDomライブラリを使用することをお勧めします。

<?php 
 

 
\t require_once "SimpleHtmlDom.php"; 
 
\t 
 
\t // put in file contentToParse.html your html code 
 
\t $htmlToParse = file_get_contents("contentToParse.html"); 
 
\t 
 
\t $htmlObject = str_get_html($htmlToParse); 
 
\t 
 
\t $resultObject = array(); 
 
\t 
 
\t 
 
\t foreach($htmlObject->find("#testid ul li a") as $singleLink) 
 
\t { 
 
\t \t var_dump($singleLink->href); 
 
\t } 
 
     foreach($htmlObject->find("#testid ul li img") as $singleImage) 
 
\t { 
 
\t \t var_dump($singleImage->src); 
 
\t } 
 
\t foreach($htmlObject->find("#testid ul li span span") as $singleSpan) 
 
\t { 
 
\t \t var_dump($singleSpan->innertext); 
 
\t } 
 
?>

関連する問題