За последние 24 часа нас посетили 21946 программистов и 1103 робота. Сейчас ищут 719 программистов ...

xPath в php

Тема в разделе "PHP для профи", создана пользователем TCHProgrammer, 3 апр 2017.

  1. TCHProgrammer

    TCHProgrammer Активный пользователь

    С нами с:
    8 апр 2015
    Сообщения:
    7
    Симпатии:
    0
    Здравствуйте! Я работаю с xPath для парсинга интернет-сайтов.
    Есть код:
    Код (Text):
    1. class parseOnePage{
    2.     public $list_url;
    3.    
    4.     public $list_base_xPath;
    5.    
    6.     public $list_each_xPath_relative;
    7.    
    8.     public $detail_base_xPath;
    9.    
    10.     public $list_xPath_expressions;
    11.    
    12.     public $detail_xPath_expressions;
    13.    
    14.    
    15.  
    16.    
    17.     private function getElementList(){
    18.         $doc = new DOMDocument;
    19.  
    20.         $doc->load($this->$list_url);
    21.  
    22.         $xpath = new DOMXPath($doc);
    23.  
    24.         $tbody = $doc->getElementsByTagName('tbody')->item(0);
    25.  
    26.        
    27.         $query = $this->$list_base_xPath;
    28.  
    29.         $list_base_elements = $xpath->query($query, $tbody);
    30.        
    31.         if($list_base_elements && count($list_base_elements)){
    32.             $list_base_element = $list_base_elements[0];
    33.         } else {
    34.             return false;
    35.         }
    36.        
    37.         $query = $list_each_xPath_relative;
    38.        
    39.         $list_each_element = $xpath->query($query, $this->$list_base_xPath);
    40.        
    41.         $result = array();
    42.        
    43.         foreach($list_each_element as $element){
    44.             //Что здесь писать?
    45.         }
    46.     }
    47.    
    48. }
    Так у меня вопрос:
    $list_each_element - это DOM-элемент каждого товара в списке. Внутри него нужно по xPath-запросу вытащить Наименование, Артикул и т.д. (xPath-формулы уже есть). Как это сделать? Примерно так:
    $name = $element->(xPath-выражение) и т.д. Может как-то по-другому. Заранее буду благодарен за ответ.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Правилами форума запрещено обсуждать парсинг