| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > C#. Загрузка с сайта protect.gost.ru

C#. Загрузка с сайта protect.gost.ru

Ответ
Поиск в этой теме
Непрочитано 31.03.2023, 10:03 1 | #1
C#. Загрузка с сайта protect.gost.ru
Нубий-IV
 
Инженер-философ
 
Хабаровск
Регистрация: 24.04.2019
Сообщений: 1,874

Аналог программы из download: Программа "Скачивание с protect.gost.ru". Простая консольная версия.

Сохраняет страницы, нумеруя их по порядку, для обработки или сшивки в PDF. Написана из-за того, что аналог сохраняет файлы не по порядку, а со случайными названиями.

Код:
[Выделить все]
/*
 * Protect Gost Ru Downloader
 * 
 * Загрузка с сайта https://protect.gost.ru/
 * 
 * Ссылки на изображения записаны на странице документа в виде
 * 	<a style="" href="/v.aspx?control=8&baseC=6&page=0&month=3&year=2023&search=&RegNum=1&DocOnPageCount=15&id=231438&pageK=956F267C-8806-4122-BCB0-05467A59CF9D">6</a>
 *	956F267C-8806-4122-BCB0-05467A59CF9D - идентификатор страницы
 * 	6 - номер страницы
 * Изображение страницы (файл JPG) можно загрузить по адресу
 * 	https://protect.gost.ru/image.ashx?page=956F267C-8806-4122-BCB0-05467A59CF9D
 */

using System;
using System.Net;
using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace Pgrd
{
	class Pgrd
	{
		const string sAnchorStart = "<a ";
		const string sAnchorStop = ">";
		const string sAnchorContent = "[^>]+";

		const string sAnchorEnd = "</a>";

		const string sHrefStart = "href=\"";
		const string sHrefStop = "\"";
		const string sHrefContent = "[^>\"]+";
		
		const string sPageID = "&pageK=([A-H0-9-]+)";
		const string sPageNum = "(\\d+)";
		
		const string sRegex =
			sAnchorStart +
			sAnchorContent +
			sHrefStart +
			sHrefContent +
			sPageID +
			sHrefStop +
			sAnchorStop +
			sPageNum +
			sAnchorEnd;
		
		// Регулярное выражение для поиска ссылок на изображения со страницы
		static readonly Regex rePage = new Regex(sRegex);

		public static void Main(string[] args)
		{
			// Вывод подсказки
			Console.WriteLine("Download from https://protect.gost.ru/");
			Console.WriteLine("Document address example:");
			Console.WriteLine("https://protect.gost.ru/v.aspx?control=8&baseC=6&page=0&month=3&year=2023&search=&RegNum=1&DocOnPageCount=15&id=231438");

			try {
				// Настройка соединения
				ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
				
				// Создание подключения
				var client = new WebClient();
				
				// Получение идентификатора сессии
				var stream = client.OpenRead("https://protect.gost.ru/");
				
				// Сохранение полученного идентификатора
				client.Headers[HttpRequestHeader.Cookie] = client.ResponseHeaders[HttpResponseHeader.SetCookie];
				
				stream.Close();
	
				// Загрузка документов
				for(var i = 0; ; i++) // Счетчик документов 
				{
					// Запрос адреса документа
					Console.WriteLine("\nEnter document address: ");
					var sUri = Console.ReadLine();
					
					// Загрузка документа
					try {
						Console.WriteLine("\nDownload:\n" + sUri);
						
						// Чтение содержимого страницы
						var sContent = client.DownloadString(sUri);
						
						// Поиск ссылок на изображения
						var matches = rePage.Matches(sContent);
						
						// Список найденных изображений (номер страницы, идентификатор страницы)
						var pages = new Dictionary<string, string>();
						
						// Заполнение списка изображений
						foreach (Match match in matches) {
							// Номер страницы
							var pageNum = match.Groups[2].Value;
							// Идентификатор страницы
							var pageId = match.Groups[1].Value;
							
							// Добавление ссылки в список
							// Повторно встречающиеся ссылки игнорируются
							if (!pages.ContainsKey(pageNum))
								pages.Add(pageNum, pageId);
						}
						
						// Загрузка изображений по списку
						foreach (var page in pages) {
							// Адрес изображения на сайте
							var imgAddress = "https://protect.gost.ru/image.ashx?page=" + page.Value;
							
							// Номер файла изображения
							// Для загрузки разных документов за одну сессию в один каталог
							// к номеру страницы добавляется глобальный счетчик документов
							var imgName = i + int.Parse(page.Key).ToString("D6") + ".jpg";
							
							// Загрузка изображения с сайта на диск
							Console.WriteLine("Download page №" + page.Key);
							client.DownloadFile(imgAddress, imgName);
						}
					} catch (Exception e) {
						Console.WriteLine("Error: " + e.Message);
					}
					
					Console.WriteLine("Done");
				}
			} catch (Exception e) {
				Console.WriteLine("\nError: " + e.Message);
				Console.WriteLine("Press any key...");
				Console.ReadKey();
			}
		}
	}
}
Для загрузки скопировать адрес документа из браузера в консоль.
Во вложении - скомпилированный EXE.

Миниатюры
Нажмите на изображение для увеличения
Название: Screen.png
Просмотров: 400
Размер:	46.3 Кб
ID:	254628  

Вложения
Тип файла: zip pgrd.zip (3.9 Кб, 24 просмотров)


Последний раз редактировалось Нубий-IV, 31.03.2023 в 11:40.
Просмотров: 990
 
Непрочитано 31.03.2023, 10:20
#2
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,992



Миниатюры
Нажмите на изображение для увеличения
Название: 2023-03-31_09-18-32.png
Просмотров: 315
Размер:	17.0 Кб
ID:	254630  
Nike вне форума  
 
Автор темы   Непрочитано 31.03.2023, 10:25
#3
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 1,874


Для тех, кто не доверяет чужим EXE, есть исходник. Кто не программирует, как собрать:
  1. Сохранить исходник.
    Из шапки темы скопировать содержимое pgrd.cs и сохранить в блокноте как файл pgrd.cs.
  2. Создать командный файл.
    В блокноте создать файл pgrd.cmd со следующим текстом:
    Код:
    [Выделить все]
    c:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe  pgrd.cs
    pause
    Файл сохранить рядом с исходником.
  3. Скомпилировать программу.
    Запустить файл pgrd.cmd. Рядом с исходником появится собранная программа - pgrd.exe.
  4. Если при компиляции появляется ошибка "не является внутренней или внешней командой, исполняемой программой или пакетным файлом", значит, установлен NET другой версии. Надо найти в папке "c:\Windows\Microsoft.NET" папку с компилятором csc.exe и исправить путь в файле pgrd.cmd.
  5. Эстеты могут собрать версию с иконкой:
    Код:
    [Выделить все]
    c:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe  pgrd.cs  /win32icon:pgrd.ico
    pause
    Файл с иконкой - во вложении.
P.S.
У меня как-то Касперский даже INI-файл Total Commanderа удалял как вирус. Там удачно строки в истории друг за другом выстроились, одна была с адресом, другая - с EXE, так Касперский тоже подумал, что это троян.
Вложения
Тип файла: zip pgrd.ico.zip (760 байт, 7 просмотров)

Последний раз редактировалось Нубий-IV, 31.03.2023 в 12:05.
Нубий-IV вне форума  
 
Непрочитано 31.03.2023, 10:56
#4
Shtirlic

инженер
 
Регистрация: 26.01.2017
Калининград
Сообщений: 335


Не понимаю как вы пользуетесь этим сайтом. На нём же поиска нормального нет. Чтобы скачать - надо сначала найти страничку со стандартом. А там поиск есть только в контексте месяца. Приходится пользоваться гуглом.
И даже когда нашел нужный СП, то это не решает проблему. Вот есть, например, СП20: оригинальный документ и 4 изменения выложены отдельно. Т.е. чтобы получить последнюю редакцию, надо самому скомпоновать эти файлы в один.

Пожалуюсь.
Раньше пользовался docs.cndt. Там была разметка документа и удобная навигация. В прошлом году они убрали бесплатный доступ к сводам правил. Я запросил у них цену, они написали 5000 в месяц. Дорого, блин.
Пришлось пользоваться другими сервисами. Например files.stroy. Но там навигации нет, и я пока не до конца доверяю сайту. И часто файлы выложены картинкой, поиск не работает. Аналогично meganorm

Если же надо на 100% удостовериться в актуальной ревизии СП с изменениями, то можно использовать сайт фауфцс. Но там тоже документы выложены в картинках. А картинками неудобно пользоваться. Хочется иметь хотя бы возможность поиска(о перекрестных ссылках пока даже не мечтаю). И про 100% тоже не факт, иногда фауфцс не выкладывает документ с актуальными ревизиями. Приходилось писать им, тогда они исправляются и выкладывают актуальные ревизии
Shtirlic вне форума  
 
Автор темы   Непрочитано 31.03.2023, 12:19
#5
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 1,874


Цитата:
Сообщение от Shtirlic Посмотреть сообщение
можно использовать сайт фауфцс
Он вроде как без ГОСТов. За гостами приходится ходить на protect.gost.ru.
Цитата:
Сообщение от Shtirlic Посмотреть сообщение
Хочется иметь хотя бы возможность поиска
Я собираю скачанные картинки в PDF программой jpeg2pdf. Она ничего не пережимает, а пишет JPG как есть, байт-в-байт. Для такого поганого качества картинки это важно.

А из простых и бесплатных программ добавить распознанный текст к PDF умеет PDF24 Creator. Убитые ГОСТЫ с protect.gost.ru он, может, и не одолеет, а в СП с faufcc поиск вполне приличного качества добавляет.
Нубий-IV вне форума  
 
Непрочитано 31.03.2023, 13:20
#6
ingt


 
Блог
 
Регистрация: 09.08.2022
Сообщений: 1,826


Работает. Во вложении пример после обработки в скантайлоре.
Вложения
Тип файла: djvu Пример.djvu (554.9 Кб, 20 просмотров)
ingt вне форума  
 
Автор темы   Непрочитано 31.03.2023, 13:31
#7
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 1,874


Цитата:
Сообщение от ingt Посмотреть сообщение
после обработки в скантайлоре
Этому госту повезло с разрешением. Обычно там такая вот порнография лежит: ГОСТ Р 10.0.06-2019 (см. страницы с рисунками). Там и человеку не разобрать что написано, не то что в OCR скармливать.
Нубий-IV вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > C#. Загрузка с сайта protect.gost.ru

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скачал DWG True View 2012, с сайта производителя Sla Прочее ПО от Autodesk 2 18.05.2012 15:38
Autocad Mep 2009 - полная загрузка процессора при работе с flex-возд-ми eugen2002 Вертикальные решения на базе AutoCAD 1 03.02.2012 12:33
MEP2009 - 100%-ная загрузка процессора при обработке таблицы eugen2002 Вертикальные решения на базе AutoCAD 9 17.11.2011 16:59
Как снизить трафик при редактировании Сайта T-Yoke Прочее. Программное обеспечение 42 04.02.2009 12:45
Вчера рекорд-завтра норма!... Или загрузка проектировщика Randolph Организация проектирования и оформление документации 22 01.03.2008 23:36