С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
_arty_
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
1

Переход по страницам

14.04.2014, 14:51. Просмотров 2237. Ответов 28
Метки нет (Все метки)

Задача такая:
Есть ресурс http://sberbank-ast.ru/SupplierList.aspx (ASP.NET), нужно из под C# (обычное клиентское приложение) редиректиться на следующую по счёту страницу.
Проблема в том, что мне нужно программно нажать на кнопку перехода, которая в свою очередь вызывает java-script:

HTML5
1
2
3
4
5
6
<td>
                    
                    Страница
                    1
                    [B]<a id="ctl00_ctl00_phWorkZone_nextPage" href="javascript:__doPostBack('ctl00$ctl00$phWorkZone$nextPage','')">>></a>[/B]
                </td>
Как это сделать из клиентского приложения C# и какие вообще есть способы решения данной задачи?

Дополнительно:

Интересно было бы узнать, как можно вычислить количество страниц на указанном ресурсе (если это вообще возможно)?

Каждую страничку я буду записывать в файл.

Пока код выглядит примерно так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
for (int i = 0; i<15000; i++)
            {
                HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create("http://sberbank-ast.ru/SupplierList.aspx");
                
                HttpWebResponse Response = (HttpWebResponse)WebRequestObject.GetResponse();
                Stream WebStream = Response.GetResponseStream();
                StreamReader Reader = new StreamReader(WebStream);
                string content = Reader.ReadToEnd();
                StreamWriter writer = new StreamWriter("C:\\sb-ast\\htmlBot_"+i+".html");
                writer.Write(content);
                Reader.Close();
                writer.Close();
            }
По сути мне каждый раз нужно будет посылать запрос, но уже на следующую страницу.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2014, 14:51
Ответы с готовыми решениями:

Переход по страницам в вк
Вот нашёл на просторах киберфорума код для авторизации во вконтакте, без API:...

Поиск по страницам HTML
Всем добрый день! Мне вот поставили задачу и мне нужна помощь. нужно сделать...

Переход по страницам. Глюки. Нужна подсказка
Нужно осуществить переход (next, previous) по страницам . При этом метод POST я...

Поисковил по текстовым страницам и БД
Кто может подсказать, какой-нибудь поисковик одновременно индексирующий...

Ограничение доступа к страницам на сайте.
Есть у меня две страницы. Одна общая с формой перехода на другую страницу в...

28
Alexeyjke
6 / 6 / 3
Регистрация: 28.04.2014
Сообщений: 170
20.05.2014, 10:20 21
_arty_, есть такая потребность в ежедневном мониторинге =)

Но если есть такая потребность, ничего не мешает запоминать номер последнего сообщения (оно же в списке будет первым по дате добавления) и запустить цикл вперёд...
Погоди, я выше тебе писал что то самое последнее сообщение не всегда может оказаться на самом деле последним (по счётчику), потому что там номера у них хаотичные. Допустим, в день выходит 250 сообщений, а туда попадают такие номера, как 52035, 48788 и т.п.. Тоесть тут разница идёт уже в 3-4 тысячи сообщений (связано это наверно с определённым временем выдачи сообщения по конкретному клиенту).
0
_arty_
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
20.05.2014, 11:28  [ТС] 22
Ну так ничего не мешает опять же проверять, приходит ли тебе страница пустая или нет и продолжать отсчет....
Ну или просто придётся мучаться с viewstate...
1
Alexeyjke
6 / 6 / 3
Регистрация: 28.04.2014
Сообщений: 170
20.05.2014, 17:04 23
_arty_, ты прав. Попробуй для начала проверять =)
0
Alexeyjke
6 / 6 / 3
Регистрация: 28.04.2014
Сообщений: 170
29.05.2014, 11:42 24
В общем сделал я программку, которая берёт последнее сообщение за последний день, и в +500 читает все сообщения, которые доступны.
НО!
Выяснилось, что за текущую дату могут быть сообщения, чей номер сильно отличается от текущего (например текущий 55535, а новый номер (отличающийся) - 49435.
как это обойти? Всё же надо как то прочитать странички по текущей дате, и выудить номер сообщений..
0
_arty_
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
29.05.2014, 15:35  [ТС] 25
Тебе тогда прямая дорога к POST-запросам, запусти браузер, перейди на страницу фед. ресурса, включи режим разработчика в браузере и мониторь POST-запросы, когда будешь листать страницы, в запросе должны быть указаны параметры, передаваемые форме для фильтрации данных, от этого POST-запроса и исходи, я ведь также делаю в своей утилите, передаю запрос и стягиваю данные, при чем с фильтрацией по регионам.
0
Alexeyjke
6 / 6 / 3
Регистрация: 28.04.2014
Сообщений: 170
30.05.2014, 09:12 26
_arty_, вот смотри, что содержит заголовок:
Код
POST /messages/IsSearching ctl00%24ScriptManager1=ctl00%24MainContent%24ctl12%7Cctl00%24MainContent%24ucBottomDataPager%24ctl00%24ctl01&__EVENTTARGET=ctl00%24MainContent%24ucBottomDataPager%24ctl00%24ctl01&__EVENTARGUMENT=&__VIEWSTATE=*много буков*&__EVENTVALIDATION=*много буков*&ctl00%24tbCompanySearch=&ctl00%24MainContent%24ddlMessageTypeList=&ctl00%24MainContent%24sfCompanySelector%24txtObjectName=&ctl00%24MainContent%24sfCompanySelector%24hfIdObject=&ctl00%24MainContent%24sfCompanySelector%24hfAdditionalInfo=&ctl00%24MainContent%24dpBeginPublishDate%24txtDate=28.05.2014&ctl00%24MainContent%24dpEndPublishDate%24txtDate=28.05.2014&__ASYNCPOST=true&
Я пытался прям скопировать этот заголовок и передать, в респонсе я всё равно получаю только 1 страницу.. Хотя этот заголовок передаётся при переключении на 2ую.
0
_arty_
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
30.05.2014, 09:14  [ТС] 27
Цитата Сообщение от Alexeyjke Посмотреть сообщение
Я пытался прям скопировать этот заголовок и передать, в респонсе я всё равно получаю только 1 страницу.. Хотя этот заголовок передаётся при переключении на 2ую.
Значения в POST-запросе каждый раз разные, а ты передаёшь один и тот же запрос, вот поэтому и получаешь одну и ту же страницу.
0
Alexeyjke
6 / 6 / 3
Регистрация: 28.04.2014
Сообщений: 170
30.05.2014, 09:22 28
_arty_, так я и передал для теста 1 раз.
0
Alexeyjke
6 / 6 / 3
Регистрация: 28.04.2014
Сообщений: 170
04.06.2014, 15:55 29
как в рамках 1 сессии кинуть несколько данных подряд(postdata)?
Тоесть кинуть данные, получить ответ. на их основе снова кинуть пост данные, получить ответ.
0
04.06.2014, 15:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2014, 15:55

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

WPF Переход по страницам и переход со страницы на главную форму
У меня есть главная страница (форма), есть еще одна страница. Хочу при нажатии...

Переход по страницам
Вообщем проблема такова, создаю свою игру закинула один скрипт, пропитала всё...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru