Парсинг сайта

1. user853074 25.03.19 14:49 Сейчас в теме
Хочу взять информацию с сайта, через http запрос с 1с-ки.

Столкнулся с проблемой кодировки сайта, при чём только на 1- ном не распознает в 1с символы.

На сайте кодировка "windows-1251". Вот как выдает с "УТФ" и с "виндовс", вроде и разбирает на текст, но всеравно "???", как справится с такой роблемой, подскажите пожалуйста.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
26. user853074 10.04.19 10:05 Сейчас в теме
(25)

Спасибо вам за помощь. В итоге пришлось создавать временный файл, в который я записывал информацию в необходимой кодировки, а дальше читал с этого файла и указывал "тип кодировки: системная"
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Eternal_student799 25.03.19 14:53 Сейчас в теме
(1) то есть вместо ??? должно что то быть, так?
6. DJDUH 17 25.03.19 16:01 Сейчас в теме
(1) А кодировка и на клиенте и на сервере одинаковая? (1С-ки)
Если база SQL -какая там кодировка в MSSQL?
Может на сайте "UTF-16" - предположил.
7. user853074 25.03.19 16:10 Сейчас в теме
(6)

На сайте кодировка стоит, "вин-1251", в 1с в програмном коде тоже ставлю "вин-1251".

У меня на об. приложении, всё на сервере выполняется, если я правильно понимаю вопрос
8. DJDUH 17 25.03.19 16:15 Сейчас в теме
(7) тогда попробуйте hеtp-запрос строкой в браузере протестить, какой будет результат.
9. user853074 25.03.19 16:27 Сейчас в теме
(8) Я пробовал <met a http-equiv="X-UA-Compatible" content="IE=EmulateIE7"> <met a http-equiv="Content-Type" content="text/html; charset=windows-1251">

Вот что выдает в браузере.
10. user853074 25.03.19 18:35 Сейчас в теме
(6)


Немного переделал подключение теперь под "УТФ" выдает такие символы -

"Ii?ou/ia?aoiauEoeo?ocaIanei iianiei. ia ?ao.Ioaieoa 2 ee.Ioaieoa 3 ee.Ioaieoa 6 ee.O?io iianiei" - понимаю что не верная кодировка, но как протестить до нужной не понимаю
11. DJDUH 17 25.03.19 18:52 Сейчас в теме
(10) может перебором всех возможных.
3. user853074 25.03.19 14:56 Сейчас в теме
Да, вместо "???" должен быть текст на русском языке.
4. Skill 25.03.19 15:41 Сейчас в теме
5. user853074 25.03.19 15:50 Сейчас в теме
(4)
Первый скрин "windows-1251", второй "UTF-8", кирилица не отображается с этого сайта((
13. VladimirB 16 26.03.19 16:50 Сейчас в теме
(1)

	_СайтИсточник ="https://agrotender.com.ua/kompanii/comp-2196-pricetbl.html";
	Адрес=_СайтИсточник;
	
	
//	ИмяВходящегоФайла =ПолучитьВременныйФайл("html");
	
//	WinHttp=СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
	WinHttp=Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
//	Если ПустаяСтрока(ПараметрыПрокси)=0 Тогда
//		WinHttp.SetProxy(2,ПараметрыПрокси);   //для отладки
//	КонецЕсли;
	WinHttp.Open("GET", Адрес, 0);
//	WinHttp.SetRequestHeader("Host", _СайтИсточник);
  	WinHttp.SetRequestHeader("Accept-Language", "ru");
	WinHttp.SetRequestHeader("Accept-Charset","utf-8");
	WinHttp.setRequestHeader("Content-Language", "ru");
	WinHttp.setRequestHeader("Content-Charset", "utf-8");
	WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
	WinHttp.setRequestHeader("Connection", "close");

	Попытка
	 //   _ВремяОжидания=_getPerformanceCounter();
		WinHttp.Send();
		WinHttp.waitForResponse(5);
	//	_ВремяОжидания=_getPerformanceCounter()-_ВремяОжидания;
	Исключение   
//		Сообщить(ОписаниеОшибки(),"!");
		Возврат ;
    КонецПопытки;
	Если WinHttp.Status = 200 Тогда
//		Сообщить("HTTP status: "+WinHttp.Status+" "+WinHttp.StatusText+", время ожидания "+_ВремяОжидания+" ms");        
	Иначе
//		Сообщить("HTTP status: "+WinHttp.Status+" "+WinHttp.StatusText+", ошибка!","!");
		Возврат ;
	КонецЕсли;
	//Сообщить(Лев(WinHttp.ResponseText, 200));
	
//	обСтримВыход=СоздатьОбъект("ADODB.Stream");
//	обСтримВыход.Type=1;
//	обСтримВыход.Mode=3;
//	обСтримВыход.Open();
 //   олеШелл = СоздатьОбъект("MSScriptControl.ScriptControl");
    // установим язык сценариев
  //  олеШелл.Language = "vbscript";
    // добавим созданные объекты
//    олеШелл.AddObject("oleADO", обСтримВыход);
 //   олеШелл.AddObject("WinHttp", WinHttp);
    // с помощью скрипта запишем в поток ADO данные из
    // объекта XMLHttpRequest
    // то есть содержимое страницы
//    олеШелл.Eval("oleADO.Write(WinHttp.ResponseBody)");
//	обСтримВыход.SaveToFile(ИмяВходящегоФайла,2);
Показать


с помощью этого кода страница получена без абракадабры
Gendelf; user853074; +2 Ответить
16. user853074 27.03.19 11:17 Сейчас в теме
(13)

<div id="cprtblajx"><div id="cprtbldiv2" class="cprtbldiv">
<div class="cprtbldiv-scroll"><table class="cprtbl">
<tr>
<th id>Ii?ou/ia?aoiau</th><th>Eoeo?oca</th><th class="even">Ianei iianiei. ia ?ao.</th><th>Ioaieoa 2 ee.</th><th class="even">Ioaieoa 3 ee.</th><th>Ioaieoa 6 ee.</th><th class="even">O?io iianiei. aunieii?io.</th></tr><tr class="even">
<td><div>Ieeieaaaneee II</div><span>DAP Yaa?e</span>

С помощью вашего кода, я получал вот такой текст. Как видно, что русские символы, вместо "??" стали другими, но все равно это не русский шрифт
17. VladimirB 16 27.03.19 15:04 Сейчас в теме
(16)
Разремарьте тогда Это код . Он у меня написан для 7.7
Немного подправьте, чтобы работало на 8.x (Вместо "СоздатьОбъект" новый "COMОбъект")
И посмотрите ИмяВходящегоФайла
возможно отличие в том , что вы как-то по другому сохраняете файл.

Вообще вы каким-нибудь proxy пользуетесь?
Я отлаживаю запросы через фидлер. Он тоже показывает все красиво для вашей страницы.


//    обСтримВыход=СоздатьОбъект("ADODB.Stream");
//    обСтримВыход.Type=1;
//    обСтримВыход.Mode=3;
//    обСтримВыход.Open();
 //   олеШелл = СоздатьОбъект("MSScriptControl.ScriptControl");
    // установим язык сценариев
  //  олеШелл.Language = "vbscript";
    // добавим созданные объекты
//    олеШелл.AddObject("oleADO", обСтримВыход);
 //   олеШелл.AddObject("WinHttp", WinHttp);
    // с помощью скрипта запишем в поток ADO данные из
    // объекта XMLHttpRequest
    // то есть содержимое страницы
//    олеШелл.Eval("oleADO.Write(WinHttp.ResponseBody)");
//    обСтримВыход.SaveToFile(ИмяВходящегоФайла,2);
Показать
user853074; +1 Ответить
18. user853074 27.03.19 17:21 Сейчас в теме
(17) Тоже самое, я даже не сохраняю файл, "WinHttp.ResponseText" я получаю текст, а потом уже парсю его. И когда получаю вот такие символы, на русские выдает "Ii?ou/ia?aoiau"
19. VladimirB 16 27.03.19 17:51 Сейчас в теме
(18) А вы его точно пробовали сохранять этим кодом?
У меня отрабатывает правильно. в файле все читается.
Правда файл уже в win-1251 кодировке.
Far-ом смотрел.
Прикрепленные файлы:
t9129742.html
20. VladimirB 16 27.03.19 17:56 Сейчас в теме
(18) А такого не может быть, что у вас cp_1251.nls изменена?
21. user853074 29.03.19 12:47 Сейчас в теме
(19) В файл если сохранить тоже самое. Но мне нужно просто прочитать. Возможно стоит другую кодировку указать?

У меня раньше через ХТТП были символы "????", сейчас при помощи вашего ком объекта "<td><div>Ieeieaaaneee II</div><span>DAP Yaa?e</span> "
22. VladimirB 16 29.03.19 17:32 Сейчас в теме
(21) Вышлите сам файл, который у вас получается
23. user853074 08.04.19 13:47 Сейчас в теме
(22)

Пробовал сам разобраться ещё. Максимум что у меня получилось.

Я нашёл кодировку, пытаюсь сохранить её в текстовый файл. Пробовал просто создав текст файл, также и с помощью вашей обработки. В Итоге у меня в файле весь текст кирилицой нормально, но в 1с по прежнему иероглифы. Пробовал считать текст с файла, те же иероглифы. Такоё чувство что 1с сам перекодирывает текст под себя. Не понятно как с этим бороться
24. VladimirB 16 09.04.19 07:23 Сейчас в теме
(23) Тогда перед чтением из текстового файла устанавливайте кириллицу
user853074; +1 Ответить
25. user853074 09.04.19 15:03 Сейчас в теме
(24) В интернете я нашёл раскодировку. Для данного шрифта кодировка "ISO-8859-15", я записываю в текстовый файл, и потом пытаюсь прочитать с него. Если читаю без кодировки, то получают "абракадабры", если вставляю тип кодировки, получаю тоже самое. После вашего кода считываю с файла.

Текст = Новый ТекстовыйДокумент;
Текст.Прочитать("D:\ОБМЕН\Nikita\тест\нгнгнг.txt", "ISO-8859-1");
26. user853074 10.04.19 10:05 Сейчас в теме
(25)

Спасибо вам за помощь. В итоге пришлось создавать временный файл, в который я записывал информацию в необходимой кодировки, а дальше читал с этого файла и указывал "тип кодировки: системная"
12. VladimirB 16 25.03.19 19:06 Сейчас в теме
14. VladimirB 16 26.03.19 16:52 Сейчас в теме
возможно вы что-то с кодировкой путаете
15. VladimirB 16 26.03.19 16:58 Сейчас в теме
Да. видно на странице есть код
<met a http-equiv="Content-Type" content="text/html; charset=windows-1251" />


Но тем не менее замечательно все отдает на UTF-8
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот