2014-06-08 3 views
0

Я пытаюсь получить некоторые данные веб-сайта (taste.com.au), но мне не удается получить данные элемента без класса или идентификатора.file_get_contents с preg_match получает ошибки

Вот мой код:

$url = "http://www.taste.com.au/recipes/15281/asparagus+with+sun+dried+tomatoes+and+basil"; 
$html = file_get_contents($url); 

Это один работает:

preg_match("/<h1 itemprop=\"name\">(.*)<\/h1>/i", $html, $title); 
echo $title; 

Если HTML является:

<td class="prepTime"> 
    <em itemprop="prepTime">0:10</em> //Data i want 
    <p>To Prep</p> 
</td> 

Но я не уверен, как получить данные код выглядит следующим образом:

<td class="cookTime"> 
    <em>0:15</em> //Data i want 
    <p itemprop="cookTime" datetime="PT15M">To Cook</p> 
</td> 

** ОБНОВЛЕНИЕ: ** Мне все еще нужна помощь, я попытался добавить в начало тега после него, но не работает.

+0

http://www.php.net/manual/en/class.domxpath.php может иметь некоторую помощь –

+0

Не совсем уверен, что делать с этим, им достаточно новое для PHP – spazhead

+0

http://stackoverflow.com/a/16755722/1468708 –

ответ

1

Кроме того, вы можете использовать DOMXPath для перемещения и поиска нужных значений. Рассмотрим следующий пример:

$url = "http://www.taste.com.au/recipes/15281/asparagus+with+sun+dried+tomatoes+and+basil"; 
$html = file_get_contents($url); 
$dom = new DOMDocument(); 
@$dom->loadHTML($html); 

$finder = new DomXPath($dom); 
$values = $finder->query("//tr[@class='info-row']/td[@class='cookTime']/em"); 

foreach($values as $value) { 
    echo $value->nodeValue; // 0:15 
} 
Смежные вопросы