Exemplo n.º 1
0
        private async void Update_Status(object sender, RoutedEventArgs e) // обновление статусов закупки.
        {
            var unic = db.Consumers.FirstOrDefault(p => p.id == 1);

            if (unic == null)
            {
                MessageBox.Show($"Ваша база данных пуста.\nОтсутствуют записи для обновления.", "Внимание!.", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            {
                M_Parser.IsEnabled        = false;
                M_Update.IsEnabled        = false;
                M_EraserDB.IsEnabled      = false;
                M_DelOver.IsEnabled       = false;
                online_status2.Text       = "Идет обновление статусов";
                PB_Update.IsIndeterminate = true;
                await Task.Run(() => GosZak.CheckingStatus());

                MessageBox.Show("Обновление статусов завершено");
                PB_Update.IsIndeterminate = false;
                online_status2.Text       = "";
                M_Parser.IsEnabled        = true;
                M_Update.IsEnabled        = true;
                M_EraserDB.IsEnabled      = true;
                M_DelOver.IsEnabled       = true;
                DataLoad();
            }
        }
Exemplo n.º 2
0
        public void pars_page(string page, int num_of_page)    // в цикле парсим всю базу
        {
            int f   = 0;
            int tmp = 100;                                     //временная переменная - указываю сколько парсить страниц(*20 = карточек) потом передам переменную num_page

            for (int i = 1; i <= tmp; i++)                     // i < = num_of_page
            {
                Thread.Sleep(TimeSpan.FromSeconds(5));         // устанавливаем таймаут между парсингом блока страниц иначе может сойти за DoS атаку

                string evrytPage = page + i;                   // страница для парсинга адресов карточек
                string code_page = GosZak.GetPage(evrytPage);  // получаем исходный кон
                int    mun       = GosZak.ParsPage(code_page); // парсинг

                this.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
                                            (ThreadStart) delegate()
                {
                    f += mun;
                    pbStatus.Maximum    = tmp;
                    pbStatus.Value      = i;
                    online_status2.Text = $"Обработано карточек - {f} ";
                    online_status1.Text = $"Обработано страниц {i - 1} из {num_of_page}";

                    DataLoad();
                });
            }

            MessageBox.Show($"Парсинг завершен.", "Внимание.", MessageBoxButton.OK, MessageBoxImage.Information);
        }
Exemplo n.º 3
0
        public void Pars_Task(string page, int start_page_num, int end_page_num, CancellationToken token)    // в цикле парсим всю базу
        {
            for (int i = start_page_num; i <= end_page_num; i++)
            {
                if (token.IsCancellationRequested)
                {
                    break;
                }
                try
                {
                    //string code_page = "";
                    string evrytPage = page + i;                  // страница для парсинга адресов карточек

                    string code_page = GosZak.GetPage(evrytPage); // получаем исходный код

                    if (code_page != "")
                    {
                        int mun = GosZak.ParsPage(code_page); // парсинг

                        this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart) delegate()
                        {
                            cards += mun;
                            pages += 1;
                            online_status2.Text = $"Обработано карточек - {cards} ";
                            online_status1.Text = $"Обработано страниц {pages} из {num_page}";
                        });
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"Сервер не доступен, ошибка 503 " + ex + "\n Для продолжения нажмите OK");
                }
            }
        }
Exemplo n.º 4
0
        public void pars()
        {
            string firstPage = "https://goszakupki.by/tenders/posted?page="; // входная точка для парсинга
            string startPage = firstPage + "1";                              // стартовая страница для парсинга
            string page      = GosZak.GetPage(startPage);                    // получаем код страницы
            int    num_page  = int.Parse(GosZak.Pars_Num_Page(page));        // общее количество страниц

            pars_page(firstPage, num_page);                                  // метод парсинга страниц с адресами карточек
        }