LINUX.ORG.RU

Ооочень странное поведение Simple Html DOM

 , ,


0

1

Пишу тут для себя одну штуку, типа парсера сайтов. Собственно, с помощью Simple Html DOM распарсил несколько меня интересующих, дошел до последнего и... Вообще не понимаю, как его парсить.

Во первых, я не могу получить страницу функцией file_get_html(). Возвращались какие то две строки со слетевшей кодировкой, гуглеж не помог.

Тяну страницу curl'ом - скачивается, все хорошо. На странице есть такой кусок:

<span class="price">
    <ins class="num">20 670</ins>
    <ins class="rub">руб.</ins>
</span>
Казалось бы, проще не бывает! Далее, запускаю вот это:
foreach ($html->find('span') as $span) {
    if ($span->class == "price") { // Не работает
        ...
    }
}
Это просто бред какой то. Я все сайты распарсил таким образом, а вот этот ни как не получается.

Deleted

Так может он проверяет есть ли у тебя нужные хедеры, тот же юзерагент. curl по идее должен дефолт сам проставлять.

На странице есть такой кусок:

Нету.

ritsufag ★★★★★ ()
Последнее исправление: ritsufag (всего исправлений: 1)
Ответ на: комментарий от ritsufag

Но вот же он! Или ты намекаешь на то, что он на страницу может динамически вставляться и curl не успевает это подтянуть?

П.С. Я вообще запутался.

Deleted ()
Ответ на: комментарий от Deleted

URI точно тот же что и в ОП-посте? Просто у меня другую страницу отдаёт.
Ты смотри что у тебя curl загружает. В браузере это всё может формироваться динамически.

curl не успевает это подтянуть

curl и не подтянет, он не рендерит страницу. На выходе у тебя только строка с разметкой, которую отдаёт сервер.

Кстати, попробуй-ка дёрнуть file_get_html со stream_context

$ctx = stream_context_create([
	'http'=>
		array(
			'method' => 'GET',
			'timeout' => 30,
			'follow_location' => 0,
			'user_agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36'
		)
]);
	
file_get_html($url, false, $ctx);


может там действительно только UA проверяется.

ritsufag ★★★★★ ()
Последнее исправление: ritsufag (всего исправлений: 1)
Ответ на: комментарий от Deleted

смотри не в JS консоли, а ответ от сервера.

к примеру, var_dump($html);

kiotoze ★★★★ ()

Ты сохранял скачанную страницу в файл? Сохрани и проверь, что скачивает твой скрипт.

Не долби кучей запросов сайт-донор - забанят (и правильно сделают, ибо нефиг). Делай паузы побольше.

Цены по твоему пути нет, зато есть тут:

//*[@class='price']/span[1]/text()

И тут (в аттрибуте «content»):

//meta[@itemprop='price']

Валюта:

//*[@class='price']/span[2]/text()

И здесь (в аттрибуте «content»):

//meta[@itemprop='priceCurrency']
theanonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.