2015-04-03 2 views
0

Я пытаюсь скрести каждую строку по этому адресуXPath дает неправильный вывод в простом HTML DOM

http://www.gosugamers.net/counterstrike/news/archive

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

//div[class='content']/table[@class='simple gamelist medium']/tbody/tr 

это должно печатать каждую строку в тесте, однако, когда я пытаюсь это сделать в простом html dom, он возвращает thead с заголовком, датой и комментарием. Почему это не возвращает tbody вместо этого, как это происходит в xpath-помощнике?

include('simple_html_dom.php'); 



    function getHTML($url,$timeout) 
{ 
     $ch = curl_init($url); // initialize curl with given url 
     curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); // set useragent 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // write the response to a variable 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // follow redirects if any 
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); // max. seconds to execute 
     curl_setopt($ch, CURLOPT_FAILONERROR, 1); // stop when it encounters an error 
     return @curl_exec($ch); 
} 

    $html = str_get_html(getHTML("http://www.gosugamers.net/counterstrike/news/archive",10)); 



    $table = $html->find("//div[class='content']/table[@class='simple gamelist medium']/tbody/tr",0); 

    echo $table; 

ответ

0

Update:

Библиотека simplehtmldom не кажется, поддерживает позиционные предикаты в XPath. Чтобы получить определенную строку, вам необходимо передать индекс на основе 0 в качестве второго параметра в find().

Чтобы получить первую строку без заголовка (вторая строка таблицы):

$table = $html->find("//div[class='content']/table[@class='simple gamelist medium']/tbody/tr", 1); 

working phpfiddle

выражение XPath Вы выбирает каждый элемент `tr`. Если вы хотите весь элемент tbody, удалите `/ tr` из конца выражения. Если вам нужны только ячейки таблицы (`td`), добавьте`/td [1] `. Если вам нужны только заголовки, добавьте `/ td [1]/a/string()`.
+0

Хорошо, но как мне получить второй ряд? я пробовал [2], но, похоже, не работает –

+0

, что вы получаете от '// div [class = 'content']/table [@ class = 'simple gamelist medium']/tbody/tr [2] '? Нет результатов? – joemfb

+0

нет результата! странно –

Смежные вопросы