2014-01-06 63 views
0

我試圖抓住藝術家使用simplehtmldom根據Metacritic的每一張專輯發行 - http://www.metacritic.com/browse/albums/release-date/coming-soon/date?view=detailedPHP - SimpleHTMLDom - 如何訪問表格元素?

藝術家的名字都包含具有ARTISTNAME的類名單獨的TD元素中

我已經成功到目前爲止找出是

$html = file_get_html('http://www.metacritic.com/browse/albums/release-date/coming-soon/date?view=detailed'); 
    $es = $html->find('table.musicTable td'); 

我該從哪裏出發?我發現了一些例子,文檔有點混亂。任何幫助將非常感激。

回答

1

我建議使用PHP:DOM擴展 DOM manual here

這是用於分析和操縱一個非常強大的工具,XML或HTML文檔

對於你的情況,你可以做這樣的

<?php 
$html = file_get_contents('http://www.metacritic.com/browse/albums/release-date/coming-soon/date?view=detailed'); 
$doc = new DOMDocument(); 
$doc->loadHTML($html); 
$searchNode = $doc->getElementsByTagName("table"); 

foreach($searchNode as $searchNode) 
{ 
    //do your things here 
} 
?> 

甚至可以用xpath查詢文檔節點

Xpath usage

1

每名被包含到<td class="artistName">內的錨,這一切都需要什麼在這種情況下創建下面的代碼:

$url = "http://www.metacritic.com/browse/albums/release-date/coming-soon/date?view=detailed"; 

//Create a DOM object 
$html = new simple_html_dom(); 
// Load HTML from a string 
$html->load_file($url); 

// Find the anchor containing the name inside all "td.artistName" elements 
$anchors = $html->find('td.artistName a'); 

// loop through all found anchors and print the content 
foreach($anchors as $anchor) { 

    $name = $anchor->plaintext; 

    echo $name . "<br>"; 
} 

// Clear DOM object 
$html->clear(); 
unset($html); 

輸出

Peter Gabriel 
Stephen Malkmus & The Jicks 
TOY 
Black Knights 
Broken Bells 
Bruce Springsteen 
David Broza 
Eskimo Callboy 
... 

Working DEMO

請閱讀MANUAL更多例子和細節