Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1

WebRequest & Ajax

15.01.2014, 23:57. Показов 3330. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!

Есть сайт "https://www.atsenergo.ru/results/market/svnc/svnc_month/index.htm?period=102013&ftempl=3&step=1& published=20131104", разработчики поменяли на нем схему загрузки контента, а именно внедрили ajax, и код который работал через WebRequest перестал работать. Т.е. возвращается страница без динамически подгружаемого контента, как я понял WebRequest не выполняет никакие клиентские скрипты.

Собственно вопрос, можно ли заставить сервер сформировать и вернуть готовый контент?

Временное решение я нашел использую браузер для загрузки страницы.

Может кто из вас решал подобную проблему?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.01.2014, 23:57
Ответы с готовыми решениями:

Валидатор указывает на ошибочную ссылку, вместо & нужно & amp
Использую браузер FF 8.0, на нем установлен HTML Vallidator. Так вот этот валидатор ругается типо я неправильно указываю ссылку, я пишу...

Не работает WebRequest
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.pinnaclesports.com/v1/client/balance"); //request.Proxy = new...

WebRequest Headers
Добрый день, проблема в следующем, не могу отправить простейший POST запрос. Что нужно сделать: curl -X POST \ -H...

9
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
16.01.2014, 17:42
Анализируй js код, и отсылай сервису нужный запрос. Это наоборот имхо проще, т.к. данные приходят в структурированной форме. На вскидку - код формирующий страницу лежит здесь:
https://www.atsenergo.ru/idc/g... c_month.js
тебе нужны вызовы $.ajax. Данные приходят отсюда (параметры зашиты в названии xml):
https://www.atsenergo.ru/dload... ipants.xml

P.S. Я использую Opera Dragonfly (Ctrl+Shift+I), определяю, например, id блока с данными, далее в скриптах веду поиск этого id и смотрю как он заполняется.
1
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
16.01.2014, 17:48  [ТС]
Цитата Сообщение от rRczZZ Посмотреть сообщение
P.S. Я использую Opera Dragonfly (Ctrl+Shift+I)
Я использую средства Chrome.

Я нашел и js и xml, вопрос в том можно ли дернуть данные через WebRequest. Ну или по другому взять js, выполнить его и получить результат.
0
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
16.01.2014, 17:56
Grishaco, только если прикрутишь к программе движок браузера, не обязательно .net'овский. Подругому, думаю, никак - иначе зачем они нужны?
0
 Аватар для Waveform
7 / 7 / 3
Регистрация: 21.01.2014
Сообщений: 15
21.01.2014, 17:19
По своей сути ajax-запросы - обычные запросы к серверу, просто они выполняются с помощью javascript. Вам совсем не обязательно выполнять сам скрипт, достаточно просто сформировать запрос, идентичный тому, который отправляет скрипт, и послать его серверу. Таким образом, можно взять какую-нибудь программу, которая записывает все HTTP-запросы (Например, Charles, который, к сожалению, платный, но его наверное можно найти на каком-нибудь известном торрент-трекере, или бесплатная альтернатива - Fiddler), посмотреть, что именно отправляется на сервер, что приходит в ответ и в зависимости от этого изменить свой код. Можно воспользоваться и встроенными в браузеры отладочными средствами, запросы, отправляемые со страницы, будут видны во вкладке Network, но лично я предпочитаю пользоваться сторонними утилитами.
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
21.01.2014, 17:50  [ТС]
Цитата Сообщение от Waveform Посмотреть сообщение
Таким образом, можно взять какую-нибудь программу, которая записывает все HTTP-запросы (Например, Charles, который, к сожалению, платный, но его наверное можно найти на каком-нибудь известном торрент-трекере, или бесплатная альтернатива - Fiddler), посмотреть, что именно отправляется на сервер, что приходит в ответ и в зависимости от этого изменить свой код.
Проблема как раз в выполнении java скрипта, т.е. по ajax подтягивается XML файл, после в скрипте формируется контент страницы.

Проблему решил выдергиванием XML с дальнейшем формированием ссылок.
0
 Аватар для Waveform
7 / 7 / 3
Регистрация: 21.01.2014
Сообщений: 15
21.01.2014, 17:59
Цитата Сообщение от Grishaco Посмотреть сообщение
Проблема как раз в выполнении java скрипта, т.е. по ajax подтягивается XML файл, после в скрипте формируется контент страницы.

Проблему решил выдергиванием XML с дальнейшем формированием ссылок.
Вы может в коде своей программы выполнить те же ajax-запросы, что и скрипт, и делать с полученными данными всё, что заблагорассудится.
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
21.01.2014, 19:58  [ТС]
Цитата Сообщение от Waveform Посмотреть сообщение
Вы может в коде своей программы выполнить те же ajax-запросы
Можно подробнее, как выполнить с помощью WebRequest?
0
 Аватар для mbean
46 / 42 / 14
Регистрация: 18.02.2012
Сообщений: 82
21.01.2014, 20:56
Цитата Сообщение от Grishaco Посмотреть сообщение
Можно подробнее, как выполнить с помощью WebRequest?
Скорее всего Waveform имел в виду такой вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
int month = 6;
int year = 2013;
var emonths = new string[] {"nul", "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"};
WebRequest request = WebRequest.Create (string.Format("http://www.atsenergo.ru/dload/retail/{0}_{1}_gp_participants.xml", emonths[month], year));
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse ()) {
    using (Stream dataStream = response.GetResponseStream ()) {
        using (StreamReader reader = new StreamReader (dataStream)) {
            string responseFromServer = reader.ReadToEnd ();
            Console.WriteLine (responseFromServer);
        }
    }
}
То есть в итоге все сводится к обычному скачиванию xml файла.
Если же нужно выполнить ajax запрос так, как его выполняет javascript, то придется писать свой интерпретатор скрипта или искать сторонний.
0
 Аватар для Waveform
7 / 7 / 3
Регистрация: 21.01.2014
Сообщений: 15
21.01.2014, 21:58
Цитата Сообщение от mbean Посмотреть сообщение
Скорее всего Waveform имел в виду такой вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
int month = 6;
int year = 2013;
var emonths = new string[] {"nul", "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"};
WebRequest request = WebRequest.Create (string.Format("http://www.atsenergo.ru/dload/retail/{0}_{1}_gp_participants.xml", emonths[month], year));
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse ()) {
    using (Stream dataStream = response.GetResponseStream ()) {
        using (StreamReader reader = new StreamReader (dataStream)) {
            string responseFromServer = reader.ReadToEnd ();
            Console.WriteLine (responseFromServer);
        }
    }
}
Да, об этом я и говорю.
Цитата Сообщение от mbean Посмотреть сообщение
То есть в итоге все сводится к обычному скачиванию xml файла.
Если же нужно выполнить ajax запрос так, как его выполняет javascript, то придется писать свой интерпретатор скрипта или искать сторонний.
Скачивание xml-файла и есть ajax-запрос, который выполняет браузер. Я просто пытаюсь донести до вас мысль о том, что ajax-запросы это самые обыкновенные HTTP-запросы, единственное различие между ними и запросами, совершаемыми с помощью класса WebRequest - то, что одни отправляются во время выполнения js на странице браузером, а другие - во время выполнения кода вашей программы, а для сервера так разницы вообще никакой, кроме, пожалуй, заголовка "X-Requested-With" со значением "XMLHttpRequest", который вы так же можете задать в своей программе при желании и тогда уж точно всё будет совсем идентично.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.01.2014, 21:58
Помогаю со студенческими работами здесь

WebRequest метод Post
Есть html страница с формой Post и группой данных с тегами <select>, с которой передаются данные на страницу php. Я нашел код который...

WebRequest работа после авторизации
Здравствуйте. Есть задача, авторизоваться на сайте поставщика и скачать с него новый прайс-лист. Бьюсь 3й день, не получается...

WebRequest и WebResponse. Авторизация на сайте
Привет. Проблема с куками. Авторизироваться получается, а использовать куки снова - нет. Авторизация на сайте https://r01.ru-tld.ru. Не...

WebRequest. POST. UPLOAD FILE.
Добрый времени суток. Задача состоит в том, чтобы скачать файл с определённого урл, предварительно передав на этот урл пост-запрос с...

WebRequest в паралельном коде, меняющий прокси
Здравствуйте, у меня такая проблема: Моё консольное приложение парсит онлайн магазин с большим количеством товаров. Структура парсинга...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru