Witam,

Zacząłem zabawę z xpath i chyba mnie to przerasta.
Oto do czego doszedłem.
Po dobraniu się do pojedynczego diva chce przejść przez listę, div, tabelkę aż do img który mnie interesuje.

  1.  
  2. class Extractor {
  3.  
  4. var $tmp_c;
  5. var $icon;
  6. var $source;
  7. var $TPL;
  8. var $LINK;
  9.  
  10. function Extractor($source, $TPL, $LINK) {
  11. $this->source = $source;
  12. $this->TPL = $TPL;
  13. $this->LINK = $LINK;
  14. }
  15.  
  16. function Parse() {
  17. $str = $this->get_data($this->source);
  18. $dom = new DOMDocument();
  19. @$dom->loadHTML($str);
  20. $xpath = new DomXPath($dom);
  21. //$tmp = $xpath->query(".//ol[@id='rso']/li[1]/div[1]/div[2]/div[1]/*[1]/*[1]/*[1]/img/@src");
  22. $tmp = $xpath->query(".//LIST[@id='rso']/li[1]/div/div/div[2]/div/table/tbody/tr[1]/td[1]/img/@src");
  23. if (!is_null($tmp)) {
  24. foreach ($tmp as $element) {
  25. echo "<br/>[". $element->nodeName. "]";
  26.  
  27. $nodes = $element->childNodes;
  28. foreach ($nodes as $node) {
  29. echo $node->nodeValue. "\n";
  30. }
  31. }
  32. }
  33. //var_dump($img, $tmp);
  34. //print_r($tmp);
  35. }
  36.  
  37. function get_data($url) {
  38. $ch = curl_init();
  39. $timeout = 5;
  40. curl_setopt($ch, CURLOPT_URL, $url);
  41. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  42. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  43. $data = curl_exec($ch);
  44. curl_close($ch);
  45. return $data;
  46. }
  47. }
  48.  
  49. $source = 'source to file';
  50. $extractor = new Extractor($source, array(), array());
  51. $extractor->Parse();
  52.  


Otrzymuję null i nic więc pewnie szczegół tkwi tutaj:

  1. template = './/LIST[@id='rso']/li[1]/div/div/div[2]/div/table/tbody/tr[1]/td[1]/img/@src';
  2. /*
  3. Zacznij z bieżązej lokalizacji w dokumencie znajdując LISTĘ o id = rso i przejdz to jej pierwszego elementu,
  4. przejdz 2 div w doł a później kolejnym (2) w dół do tabeli jej body az do jej 1'wiersza i 1'kolumny gdzie znajduje się img i wyciągnij src z img
  5.  
  6. taa, tyle w teorii a w praktyce gnój...
  7. */


Liczę na jakiś hint z tym bo chyba wrócę znowu do regexp'a wink.gif

O dziwo ścieżka była brana jako całość od momentu ".//LIST[@id='rso']/li[1]" nie wiem czemu ale zadziało później to już tylko substr i explode.
Do zamknięcia.