Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Парсинг страницы получаемой по выполнению скрипта на JS

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
DeMonyan
Отправлено: 03 Января, 2013 - 11:43:31
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Здравствуйте, господа Гуру, с наступившими Вас праздниками.

В общем задача у меня в следующем:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $url ="http://virtonomica.ru/vera/main/common/main_page/game_info/salary";
  2. $page = file_get_contents($url);
  3.  


Вот таким образом получаю страницу и потом уже пишу обработку чтобы выдернуть те данные, которые мне нужны. Но проблема в том, что тут данные выводятся постранично. По такой ссылке я могу получить код только первой страницы.

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

В коде страницы посмеотрел, что увеличение количество данных выводимых происходит по вот такой ссылке:
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://virtonomica.ru/vera/main/common/util/setpaging/geo/salaryChanges/

Если указать в конце ссылки число, то загружается страница с указанным числом записей, если указать два параметра через слеш, то откроется страница с количеством записай указанных первым числом, и номер страницы указанный вторым числом,
но если её пытаться загрузить указанным выше способом, то загрузится заглавная страница сайта, а не то что мне нужно. Собственно говоря и вопрос как можно получить данные с такой страницы?
 
 Top
esterio
Отправлено: 03 Января, 2013 - 12:17:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Посмотрите в firebug хидеры, праметры, и делайте cURL-ом так само
 
 Top
DeMonyan
Отправлено: 03 Января, 2013 - 12:46:30
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




esterio пишет:
Посмотрите в firebug хидеры, праметры, и делайте cURL-ом так само


Не понял, что значит смотреть хидеры? На счёт JS я не прав был. Зря его приплёл в названии темы.
 
 Top
Muxa
Отправлено: 03 Января, 2013 - 12:52:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


Помог: 5 раз(а)




передаваемые заголовки при пагинации посмотрите в консоли, а затем cURL-ом отправляйте такие заголовки и парсите
 
 Top
DeMonyan
Отправлено: 03 Января, 2013 - 13:01:20
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Muxa пишет:
передаваемые заголовки при пагинации посмотрите в консоли, а затем cURL-ом отправляйте такие заголовки и парсите


Так в том и соль! Я же написал, что

CODE (htmlphp):
скопировать код в буфер обмена
  1. http://virtonomica.ru/vera/main/common/util/setpaging/geo/salaryChanges/


К вот такой ссылке добавляется 100, тогда откроется по 100 записей на странице, добавить 50/1/ откроется по 50 записей и первая страница. Но если к такому URL обратиться напрямую, то загрузится заглавная страница сайта, вместой той которая нужна.

Т.е. получает нужно загрузить страницу: http://virtonomica[dot]ru/vera/main/[dot][dot][dot]game_info/salary там активировать ссылку и результат уже парсить.

(Отредактировано автором: 03 Января, 2013 - 13:06:40)

 
 Top
Muxa
Отправлено: 03 Января, 2013 - 14:44:04
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


Помог: 5 раз(а)




curl-ом отправляйте запрос и получайте результат http://www.php.su/functions/?cat=curl
 
 Top
esterio
Отправлено: 03 Января, 2013 - 16:06:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




1. Какой запрос там используеться GET или POST
2. Часто бывает что следующая страница отдаеться через сесию, тогда вам нужно запоминать куки
3. Вместо file_get_contents используйте cURL(ссилку вам бросили)
 
 Top
DeMonyan
Отправлено: 03 Января, 2013 - 21:16:25
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




esterio пишет:
Посмотрите в firebug хидеры, праметры, и делайте cURL-ом так само


Не понимаю я честное слово, что именно надо смотреть в firebug информации там вагон и маленькая тележка, что мне из этого нужно я реально не понимаю. Недовольство, огорчение

esterio пишет:
1. Какой запрос там используеться GET или POST
2. Часто бывает что следующая страница отдаеться через сесию, тогда вам нужно запоминать куки
3. Вместо file_get_contents используйте cURL(ссилку вам бросили)


Запроса насколько я понимаю там нет никакого в явной форме. Вполне возможно, что данные передаются в сессии. сURL использовать - это конечно хорошо, но я всё ещё не понимаю какие мне ему заголовки передать и как получить страницу не на 50 записей, а на 400 или как обратиться к второй странице по 50 записей.

Я технологию не могу понять этого всего дела. Недовольство, огорчение Допустим передаётся в сессии, но поидее это не принципиально, т.к. на странице где записываются данные в переменную сессии стоит редирект в зависимости от URL с которого к ней обратились. И вот каким образом можно подменить этот URL я не понимаю. Нужно или загрузить страницу с 50-ю записями и каким-то образом с неё выполнить ссылку для увеличения количества записей или нужно обратиться непосредственно к скрипту который меняет количество отображаемых записей подменив URL страницы с которой я к нему обращаюсь.

Если я что-то не правильно в этой ситуации понимаю, то поправьте пожалуйста.

(Отредактировано автором: 03 Января, 2013 - 21:24:06)

 
 Top
DeMonyan
Отправлено: 04 Января, 2013 - 18:32:12
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. //обращаюсь сначала к странице с которой хочу получить данные
  4. $ch = curl_init("http://virtonomica.ru/vera/window/common/main_page/game_info/salary");
  5.  
  6. //Сейчас мне нужен только заголовок, чтобы передать его дальше
  7. curl_setopt($ch, CURLOPT_HEADER, 1);
  8. curl_setopt($ch, CURLOPT_NOBODY, 1);
  9. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  10.  
  11. curl_exec($ch);
  12. //Сохранили полученный заголосок
  13. $header=curl_multi_getcontent($ch);
  14.  
  15. //Печатал чтобы проверить, что получен заголовок.
  16. echo $header."<br /><br />";
  17.  
  18.  
  19. //Теперь обращаемся к странице, которая увеличивает количество выводимых строк
  20. $ch1 = curl_init("http://virtonomica.ru/vera/main/common/util/setpaging/geo/salaryChanges/200");
  21. curl_setopt($ch1, CURLOPT_HEADER, 1);
  22. //Передаём ей хедеры полученные с предыдущей страницы
  23. curl_setopt($ch1, CURLOPT_HTTPHEADER, $header);
  24. curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 0);
  25.  
  26. curl_exec($ch1);
  27.  
  28. curl_close($ch1);
  29.  
  30.  
  31. ?>


В итоге выводим и видим тупо два заголовка, не понимаю я как это правильно сделать? Огорчение
 
 Top
esterio
Отправлено: 04 Января, 2013 - 18:39:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Счас найду и брошу пример
(Добавление)
PHP:
скопировать код в буфер обмена
  1. header('Content-type: text/html; charset=utf-8');
  2. $size_in_page = 25;
  3.  
  4. $url = 'http://virtonomica.ru/vera/main/common/main_page/game_info/salary';
  5. $cookie = dirname(__FILE__).'/cookie.txt';
  6. $curl = curl_init($url);
  7. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  8. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  9. curl_setopt($curl, CURLOPT_MAXREDIRS, 10); /* Max redirection to follow */
  10. curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie); //Из какого файла читать
  11. curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
  12. $response = curl_exec($curl);
  13.  
  14. for($i = 0; $i < 2; $i++)
  15. {
  16.         $url = 'http://virtonomica.ru/vera/main/common/util/setpaging/geo/salaryChanges/'.$size_in_page.'/'.$i;
  17.         curl_setopt($curl, CURLOPT_URL, $url);
  18.         $response = curl_exec($curl);
  19.         echo $response, '<br>';
  20. }
  21. curl_close($curl);

Как-то так, но постранично у меня ен получилось, времени нету ковирять, думаю далее Вы сами сделаете
 
 Top
DeMonyan
Отправлено: 04 Января, 2013 - 21:08:07
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




esterio пишет:
Счас найду и брошу пример


Спасибо, Огромное! Немного поковыряв заработало именно так мне нужно. На досуге почитаю ещё мануал cURL интересная штука получается. Без вашего примера с получением Куков, не мог понять как с ними работать.
 
 Top
esterio
Отправлено: 05 Января, 2013 - 11:42:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




DeMonyan пишет:
Без вашего примера с получением Куков, не мог понять как с ними работать.

Лично я не люблю даный пример работы с кукисамы. Мне больше нравится читть заголовки и отдуда дергать куки
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB