Symfony DomCrawler пустой объект

Я пытаюсь оценить рейтинг сайтов обзора, используя Laravel 4 и Symfony DomCrawler.
Давайте возьмем этот сайт в качестве примера: http://estorereview.com.au/s/5951/A-Supplements
Я хочу получить 4,8 5 звезд

Это частичный код моей попытки:

<?php

use Symfony\Component\DomCrawler\Crawler;
use Symfony\Component\CssSelector\CssSelector;

function getRatingEstoreReview($url){
$html = getHtmlCurl($url);
$crawler = new Crawler($html);
$crawler = $crawler->filter('span[itemprop="ratingValue"]');
var_dump($crawler);
die("test");
return normalize($crawler,5);
}

Var_dump возвращает следующее:

object(Symfony\Component\DomCrawler\Crawler)[280]
protected 'uri' => null
private 'defaultNamespacePrefix' => string 'default' (length=7)
private 'namespaces' =>
array (size=0)
empty

Я пробовал это с другими сайтами и т. Д., Но я всегда получаю пустой объект. Доступ к значению с $crawler->first не работает так же хорошо.

Что я делаю неправильно? Спасибо.

Изменить: Даже если я фильтрую для «div», Crawler остается пустым.
PHP Simple HTML DOM Parser работает нормально

0

Решение

Полный путь CSS для этого элемента body > div:nth-child(3) > div > div > div.left-container.floatl > div.top > div.top-inner > div.store-rating-container.floatl > div.star-col.floatl.overall-rating-stars > div.rating-text.floatl > div > strong > span, Вы пытались использовать это как термин фильтра вместо этого?

Вы также можете использовать filterXPath() вместо этого, в этом случае вы ищете /html/body/div[3]/div/div/div[4]/div[1]/div[2]/div[2]/div[1]/div[2]/div/strong/span,

Изменить: это не похоже, что это относится к этой конкретной странице, но просто хотел бы упомянуть «поймал» для веб-сканирования. Помните, что для некоторых веб-страниц содержимое будет обрабатываться (пост-загрузка) JavaScript. В этом случае искомые элементы могут вообще не быть видны DomCrawler.

Обновить:

Вот результаты, которые я вижу. я использую Goutte скорее, чем getHtmlCurl(),

Код:

use Goutte\Client;
use Symfony\Component\DomCrawler\Crawler;

$client = new Client();
$crawler = $client->request('GET', 'http://estorereview.com.au/s/5951/A-Supplements');
var_dump($crawler->filter('span[itemprop="ratingValue"]'));
echo $crawler->filter('span[itemprop="ratingValue"]')->text();
die("<br />test completed");

Выход:

object(Symfony\Component\DomCrawler\Crawler)[177]
protected 'uri' => string 'http://estorereview.com.au/s/5951/A-Supplements' (length=47)
private 'defaultNamespacePrefix' => string 'default' (length=7)
private 'namespaces' =>
array (size=0)
empty
4.8
test completed

Итак, это работает.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector