Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
3 / 3 / 0
Регистрация: 02.11.2013
Сообщений: 170

Загрузка интернет страниц в цикле

16.11.2016, 00:04. Показов 958. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Цикл слишком быстро отрабатывается поэтому страницы не успевают запускаться, следовательно событие по загрузке не отрабатыается:
Pascal
1
2
3
4
5
  for I:=1 to 16 do begin
  Wb.Navigate('http://85.142.162.126/os/xmodules/qprint/index.php?proj_guid=B24AFED7DE6AB5BC461219556CCA4F9B&theme_guid=B63B71D831B3A40D41ADF42A3E281905&groupno='+I.ToString); // Загружаем страницу
 
  Wb.DocumentCompleted += DocCompl;
  end;
Если ставлю слип 2 секунды, он почему то сначало ждет 32 секунды а потом пачкой весь цикл отрабатывает. Как можно решить эту ситуацию?
Вообще цель задачи сохранить себе на компьютер все страницы с сайта.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.11.2016, 00:04
Ответы с готовыми решениями:

Очень медленно работает интернет - загрузка страниц
Последнее время загрузка страниц стала очень долгая(несколько минут) нашел 3 вируса, удалил через Cureit, полный тест на вирусы не помог. ...

Парсинг страниц в цикле
Мне нужно парсить страницы в цикле, для этого я сначала получаю часть адреса из combobox-a в массив j:=0; for i:=1 to...

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

2
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,908
Записей в блоге: 12
16.11.2016, 11:37
Akvalar, смотри:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{$apptype windows}
{$reference 'System.Windows.Forms.dll'}
{$reference 'System.Drawing.dll'}
 
uses
  System.Windows.Forms,
  System.Drawing;
 
var
  MainForm: Form;
  tmr : System.Timers.Timer;
  Wb: System.Windows.Forms.WebBrowser;
  i : integer := 0;
  
procedure DocCompl(sender: Object; e: System.Windows.Forms.WebBrowserDocumentCompletedEventArgs);
var s : string;
begin
  if Wb.DocumentStream = nil then s := '';
  var sr: System.IO.StreamReader := new System.IO.StreamReader(Wb.DocumentStream, Encoding.GetEncoding(1251));
  Wb.DocumentStream.Position := 0;
  s := sr.ReadToEnd();
  WriteAllText(Format('page{0}.txt', i), s, Encoding.UTF8)
end;
 
// по тику таймера переходим на очередную страничку, когда страница подгрузится, отработает
// Wb.DocumentCompleted и произойдет сохранение в текстовый файл
procedure tmrTick(sender : Object; e : System.Timers.ElapsedEventArgs);
begin
  inc(i);
  Wb.Navigate('http://85.142.162.126/os/xmodules/qprint/index.php?proj_guid=B24AFED7DE6AB5BC461219556CCA4F9B&theme_guid=B63B71D831B3A40D41ADF42A3E281905&groupno='+I.ToString); // Загружаем страницу
  if i = 16 then tmr.Enabled := false; // останавливаем процесс, когда добрались до конечного значения
end;
 
procedure frmLoad(sender : Object; e: System.EventArgs);
begin
  tmr := new System.Timers.Timer; // Создаем таймер, назначаем обработчик тика, и выставляем его на 2 секунды
  tmr.Interval := 2000; // 2 sec
  tmr.Elapsed += tmrTick;
  tmr.Enabled := true;
end;
 
 
  
begin
  MainForm := new Form;
  MainForm.Size := new System.Drawing.Size(600, 400);
  
  Wb := new WebBrowser; // Создаём веб-браузер
  Wb.Dock := System.Windows.Forms.DockStyle.Fill; // Растягиваем на всю форму
  
  Wb.DocumentCompleted += DocCompl; // Событие происходящее если вся страница загружена
  
  MainForm.Controls.Add(Wb);
  MainForm.Load += frmLoad; // при загрузке формы будем выполнять действия, описанные в frmLoad
  
  Application.EnableVisualStyles;
  
  Application.Run(MainForm);
end.
Кстати, зачем ты это все делаешь вручную? Есть же возможность создавать WinForms-проекты с визуальным дизайнером, достаточно было просто на форму положить WebBrowser, Timer, и написать содержимое обработчиков. Гораздо быстрее и проще.
1
3 / 3 / 0
Регистрация: 02.11.2013
Сообщений: 170
16.11.2016, 12:29  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Кстати, зачем ты это все делаешь вручную? Есть же возможность создавать WinForms-проекты с визуальным дизайнером, достаточно было просто на форму положить WebBrowser, Timer, и написать содержимое обработчиков. Гораздо быстрее и проще.
Очередная благодарность :-) Хочу разобраться со всем этим делом. Вообще делаю некое подобие парсера для одного сайта что бы создать для себя базу заданий. См. ЛС
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2016, 12:29
Помогаю со студенческими работами здесь

Get и Post запрос в цикле - парсинг 1000 страниц
В интернете очень много примеров на тематику Post и Get запросов, но все примеры сводятся только к одному запросу. Т.е. нажали кнопку,...

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

Открытие ссылок в цикле и чтение кода страниц
Нужно с каждой страницы взять инфу из тела тега h1. ole error 800a0046 try objIE:=CreateOleObject('InternetExplorer.Application');...

Загрузка файлов в цикле
Добрый день! Подскажите, как добиться, чтобы загружаемым файлам присваивались циклически созданные имена? Трудно...

Загрузка ProgressBar в цикле
В VB я в форму поставил Progress Bar и теперь хочу, чтоб при нажатии кнопки Progress Bar загружался В C# было так, а как в VB: ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
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, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
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 Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru