[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помощь с phpQuery
NeedSomeHelp
Всем привет, никак не могу спарсить расписание с сайта школы : https://tpt.siseveeb.ee/veebivormid/tunnipl...7&oppegrupp=200
Нужно спарсить время и урок, за каждый день недели.
Вот код:

<?php
require_once 'phpQuery.php';
$url=('https://tpt.siseveeb.ee/veebivormid/tunniplaan/?nadal=05.06.2017&oppegrupp=200');
$file = file_get_contents($url);
$doc=phpQuery::newDocument($file);
foreach($doc->find('.fc-content-skeleton .entry_subjects') as $day){
print_r($day);
}
phpQuery::unloadDocuments();
walerus
NeedSomeHelp
Привет, что выдает принт_р ?, ошибки?... или еще может что.
NeedSomeHelp
Цитата (walerus @ 18.06.2017 - 18:48)
NeedSomeHelp
Привет, что выдает принт_р ?, ошибки?... или еще может что.

Ничего не выдает
sergeiss
NeedSomeHelp, а как ты собираешься парсить средствами phpQuery, если там элементы формируются динамически с помощью JS?
Правда, положительный момент в том, что они не аяксом передаются, а лежат тут же в файле smile.gif Тебе нужно парсить текст другими средствами, без phpQuery.
Чтобы понять, о чем я говорю, посмотри оригинальный текст страницы, загруженный с сайта. Ищи там текст "events: [{link:'https://tpt.siseveeb.ee/veebivormid/tunniplaan/ajax_cmd?" и то, что за ним идет.

Хотя, конечно, аяксом там тоже данные запрашиваются, при кликах. Но, я так понимаю, они тебя не интересуют, эти аяксовые данные.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
NeedSomeHelp
Цитата (sergeiss @ 20.06.2017 - 00:44)
NeedSomeHelp, а как ты собираешься парсить средствами phpQuery, если там элементы формируются динамически с помощью JS?
Правда, положительный момент в том, что они не аяксом передаются, а лежат тут же в файле smile.gif Тебе нужно парсить текст другими средствами, без phpQuery.
Чтобы понять, о чем я говорю, посмотри оригинальный текст страницы, загруженный с сайта. Ищи там текст "events: [{link:'https://tpt.siseveeb.ee/veebivormid/tunniplaan/ajax_cmd?" и то, что за ним идет.

Хотя, конечно, аяксом там тоже данные запрашиваются, при кликах. Но, я так понимаю, они тебя не интересуют, эти аяксовые данные.

А чем тогда мне нужно воспользоваться, чтобы спарсить оттуда нужную информацию?
walerus
Скрипт портянка
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Content-Type: text/html; charset=utf-8");
header("Pragma: no-cache");

set_time_limit(0);
error_reporting(E_ALL);

function cURL($url){

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

$result = curl_exec($ch);
curl_close($ch);

if ($result){
return $result;
}else{
return '';
}
}


echo "<pre>";

$data = cURL("https://tpt.siseveeb.ee/veebivormid/tunniplaan/?nadal=05.06.2017&oppegrupp=200");

preg_match_all( '~events: \[\{(.*)\}\],~iUsu', $data, $matches );

$matches = '{' . $matches[1][0] . '}';
$matches = explode( '},{', $matches );

function TimeGet( $line ){
preg_match( '~start:\'(.*)\',end:\'(.*)\'~iUsu', $line, $time_tmp );
preg_match( '~(.*)T(.*)\+.*~iUsu', $time_tmp[1], $tmp_1 );
preg_match( '~(.*)T(.*)\+.*~iUsu', $time_tmp[2], $tmp_2 );

return array( 'date' => $tmp_1['1'], 'time' => array( 'start' => $tmp_1['2'], 'end' => $tmp_2['2'] ) );
}

$result = array();
foreach( $matches as $matches_line ){
preg_match( '~<span .*">(.*)</span>~iUsu', $matches_line, $title_tmp );
$time_tmp = TimeGet( $matches_line );
$result[ $time_tmp['date'] ][] = array( 'title' => trim( $title_tmp[1] ), 'time' => $time_tmp['time'] );
}

print_r($result);

Результат портянка
Array
(
[2017-06-05] => Array
(
[0] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 08:15:00
[end] => 09:00:00
)

)

[1] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 09:10:00
[end] => 09:55:00
)

)

[2] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 10:05:00
[end] => 10:50:00
)

)

[3] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 11:00:00
[end] => 11:45:00
)

)

[4] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 12:30:00
[end] => 13:15:00
)

)

[5] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 13:25:00
[end] => 14:10:00
)

)

)

[2017-06-06] => Array
(
[0] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 08:15:00
[end] => 09:00:00
)

)

[1] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 09:10:00
[end] => 09:55:00
)

)

[2] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 10:05:00
[end] => 10:50:00
)

)

[3] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 11:00:00
[end] => 11:45:00
)

)

[4] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 12:30:00
[end] => 13:15:00
)

)

[5] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 13:25:00
[end] => 14:10:00
)

)

[6] => Array
(
[title] => Kehaline kasvatus (tьdrukud)
[time] => Array
(
[start] => 14:20:00
[end] => 15:05:00
)

)

)

[2017-06-07] => Array
(
[0] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 08:15:00
[end] => 09:00:00
)

)

[1] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 09:10:00
[end] => 09:55:00
)

)

[2] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 10:05:00
[end] => 10:50:00
)

)

[3] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 11:00:00
[end] => 11:45:00
)

)

[4] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 12:30:00
[end] => 13:15:00
)

)

[5] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 13:25:00
[end] => 14:10:00
)

)

)

[2017-06-08] => Array
(
[0] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 08:15:00
[end] => 09:00:00
)

)

[1] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 09:10:00
[end] => 09:55:00
)

)

[2] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 10:05:00
[end] => 10:50:00
)

)

[3] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 11:00:00
[end] => 11:45:00
)

)

[4] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 12:30:00
[end] => 13:15:00
)

)

[5] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 13:25:00
[end] => 14:10:00
)

)

)

[2017-06-09] => Array
(
[0] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 08:15:00
[end] => 09:00:00
)

)

[1] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 09:10:00
[end] => 09:55:00
)

)

[2] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 10:05:00
[end] => 10:50:00
)

)

[3] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 11:00:00
[end] => 11:45:00
)

)

[4] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 12:30:00
[end] => 13:15:00
)

)

[5] => Array
(
[title] => Programmeerimise alused
[time] => Array
(
[start] => 13:25:00
[end] => 14:10:00
)

)

)

)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.