@danchikraw
Веб-додик

Как найти элементы через DOMXpath?

Хочу спарсить объявления. Я смог получить всю страницу с объявлениями через curl и пытаюсь сейчас собрать все названия объявлений со страницы. Но не работает. Когда делаю var_dump результат такой:
object(DOMNodeList)#10 (1) { ["length"]=> int(0) }
Код:
$link = $this->model->parseLink('https://www.olx.ua/elektronika/tv-videotehnika/odessa/?search%5Bprivate_business%5D=private');
        $dom = new \DOMDocument($link);
        $xpath = new \DOMXPath($dom);
        $elements = $xpath->query('/html/body/div[1]/div[4]/section/div[3]/div/div[1]/table[2]/tbody/tr/td/div/table/tbody/tr[1]/td[2]/div/h3/a/strong');

Функция parseLink, с ней всё нормально но код приложу:
public function parseLink($link)
    {
        $curl = curl_init($link);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        return curl_exec($curl);
    }
  • Вопрос задан
  • 417 просмотров
Решения вопроса 1
DevMan
@DevMan
$html = file_get_contents('https://www.olx.ua/elektronika/tv-videotehnika/odessa/?search%5Bprivate_business%5D=private');

libxml_use_internal_errors(true);
$dom = new \DOMDocument();
$dom->loadHTML($html);
$xpath = new \DOMXPath($dom);
$elements = $xpath->query('/html/body/div[1]/div[4]/section/div[3]/div/div[1]/table[2]/tbody/tr/td/div/table/tbody/tr[1]/td[2]/div/h3/a/strong');

foreach ($elements as $title) {
    echo "$title->nodeValue\n";
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы