Имя: Пароль:
1C
 
Парсинг Html
,
0 Not1C
 
18.05.16
12:14
Добрый день. Пару лет выгружал курсы валют с oanda.com. Но потом у них что-то изменилось и старая схема перестала работать. Решил нужную информацию вытягивать из html
Сейчас нужно вытянуть кросс-курсы из этой таблицы
https://www.oanda.com/currency/table?date=2016&date_fmt=us&exch=EUR&sel_list=CZK_PLN_RUB_UAH&value=1&format=HTML&redirected=1
Пытаюсь сохранить html файл, но получаю лишь заголовки

Соединение=Новый HTTPСоединение("oanda.com");
ИмяВременногоФайла=ПолучитьИмяВременногоФайла("tmp");
Соединение.Получить("/currency/table?date=201605&date_fmt=us&exch=EUR&sel_list=CZK_PLN_RUB_UAH&value=1&format=HTML&redirected=1", ИмяВременногоФайла);
1 Not1C
 
18.05.16
12:16
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
2 Звездец
 
18.05.16
12:16
открыть типовую и посмотреть как получают официальный курс валют. Зачем изобретать велосипед, чем этот непонятный сайт лучше?
3 Not1C
 
18.05.16
12:17
если сохранять html файл curl'ом, то все ок
4 Широкий
 
18.05.16
12:17
5 Not1C
 
18.05.16
12:18
(2) оф. курс нам не подходит
(4) вот эта схема перестала работать
6 Not1C
 
18.05.16
12:19
Вопрос сейчас,почему 1С не сохраняет полностью html файл
7 Локи-13
 
18.05.16
12:39
(6) а ты в курсе что на сайте https ?
8 Gary417
 
18.05.16
12:47
(6) а вы посмотрите что такое 301 Moved Permanently и остальной заголовок подробно
9 Not1C
 
18.05.16
12:50
(7) В курсе. Для https есть разница в коде? Где искать пример кода?
10 Gary417
 
18.05.16
12:51
блин вот я могу понять когда простой юзер завёт админа с квадратными глазами "ой всё сломалось, я копировал файл а тут ошибка_кровькишкиппц_..подходишь висит окно "вы уверены что хотите скопировать? данет"

но блин когда программер делает интерфейс к какомуто сервису, и сервис буквально прямым текстом возвращает ответ "вот теперь я доступен по такому адресу блаблабла"... и программер бежит спрашивать "а чёйто не работает"... просто руки опускаются
11 Not1C
 
18.05.16
12:51
HTTPСоединение.Защищенное
12 Not1C
 
18.05.16
12:53
(10) по моему нику можно понять,что я не программист 1С
13 Широкий
 
18.05.16
12:54
Если у тебя обработка из (4)
HTTP=Новый HTTPСоединение(СерверИсточник,,,,,Истина);
14 Not1C
 
18.05.16
12:56
там тип не булево
15 Gary417
 
18.05.16
12:56
(12) "я не настоящий сварщик" :)

а чтобы знать как http работает не нужно быть программистом 1С
16 Not1C
 
18.05.16
12:58
"я не сварщик" и "я не настоящий сварщик"
Найди отличие. Спасибо за помощь
17 Локи-13
 
18.05.16
12:59
(9) в синтакс помощнике конечно!

ssl = Новый ЗащищенноеСоединениеOpenSSL(
                Новый СертификатКлиентаWindows(
                                СпособВыбораСертификатаWindows.Выбирать),
                Новый СертификатыУдостоверяющихЦентровWindows());  
                        
httpsconn = Новый HTTPСоединение(
                            "hostname",,,,,
                            5, // таймаут в секундах
                            ssl // защищенное HTTPS соединение
18 Not1C
 
18.05.16
13:00
Ошибка работы с Интернет:   Удаленный узел не прошел проверку

ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
            Новый СертификатыУдостоверяющихЦентровWindows());

    
Соединение=Новый HTTPСоединение("oanda.com",,,,,,ssl1);
ИмяВременногоФайла=ПолучитьИмяВременногоФайла("tmp");
Соединение.Получить("/currency/table?date=201605&date_fmt=us&exch=EUR&sel_list=CZK_PLN_RUB_UAH&value=1&format=HTML&redirected=1", ИмяВременногоФайла);
19 Not1C
 
18.05.16
13:01
нужен другой сертификат, видимо его нужно будет как-то сохранить и подсунуть 1с
20 Локи-13
 
18.05.16
13:01
(18) можно еще так
ssl4 = Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено );
21 Not1C
 
18.05.16
13:03
а вот теперь файл не отдает

{Форма.Форма.Форма(11)}: Ошибка при вызове метода контекста (Получить)
Соединение.Получить("/currency/table?date=201605&date_fmt=us&exch=EUR&sel_list=CZK_PLN_RUB_UAH&value=1&format=HTML&redirected=1", ИмяВременногоФайла);
по причине:
Файл не обнаружен '/currency/table?date=201605&date_fmt=us&exch=EUR&sel_list=CZK_PLN_RUB_UAH&value=1&format=HTML&redirected=1'
по причине:
Ошибка работы с Интернет:  ресурс не найден (404). <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
<head>
    
    <title>File Not Found | OANDA Australia</title><script type="text/javascript"><!--
// Inlined /jslib/perf/log_start_time.js
window.start_time=new Date();
//-->
</script><script type="text/javascript" src="/jslib/jquery/jquery-1.10.2.js"></script>
    
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="description" content=""><meta name="keywords" content="found,page,OANDA,fxTrade,Account,Services,were,date,link,Home,file,File,your,Forex,Trading,Business,FXGlobalTransfer,again,Lost,access,Find,once,Travelers,Trader,Current,Rate,Cross,FXCheatsheet,Table,Your,Open,Login,FXDaily,FXHistory,trying,FXManager,Training,Spreads,Currency,FXConverter,Tools,FXGame,please,likely,This,looking,because,typed,favorite,bookmark,reason,whatev
по причине:
Ошибка работы с Интернет:  ресурс не найден (404)
22 Not1C
 
18.05.16
13:04
этот ресурс есть,может по ссылке перейти
23 Широкий
 
18.05.16
13:05
(14) Т.е. ты проверил или наперед знаешь?
24 drcrasher
 
18.05.16
13:05
(1) если оно возвращает 301, то нужно смотреть по адресу, куда оно собственно 301:

HTTPОтвет (HTTPResponse)
Свойства:

Заголовки (Headers) = нужно смотреть сюда
КодСостояния (StatusCode) = 301
25 Not1C
 
18.05.16
13:05
26 Not1C
 
18.05.16
13:12
Подсунул ему сертификат,который экспортировал в файл

ssl2 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаWindows(),
            Новый СертификатыУдостоверяющихЦентровФайл("C:/1/ssl306058.cloudflaressl.com"));      


Соединение=Новый HTTPСоединение("oanda.com",,,,,,ssl2);

{Форма.Форма.Форма(16)}: Ошибка при вызове метода контекста (Получить)
Соединение.Получить("/currency/table?date=2016&date_fmt=us&exch=EUR&sel_list=CZK_PLN_RUB_UAH&value=1&format=HTML&redirected=1", ИмяВременногоФайла);
по причине:
Ошибка работы с Интернет:   Удаленный узел не прошел проверку
27 Широкий
 
18.05.16
13:14
(26) Еще раз, если ты используешь обработку то смотри (13)
28 Not1C
 
18.05.16
13:18
(27) Я вроде бы уже писал,что у последнего параметра другой тип, не булево
29 Широкий
 
18.05.16
13:20
(28) А я тебя написал - ты пробовал или нет?
30 Not1C
 
18.05.16
13:24
пробовал,ошибка
31 Not1C
 
18.05.16
13:27
не много не так, но все равно ошибка
{Форма.Форма.Форма(17)}: Ошибка при вызове метода контекста (Получить)
Соединение.Получить("/currency/table?date=2016&date_fmt=us&exch=EUR&sel_list=CZK_PLN_RUB_UAH&value=1&format=HTML&redirected=1", ИмяВременногоФайла);
по причине:
Ошибка работы с Интернет:   Удаленный узел не прошел проверку

ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
            Новый СертификатыУдостоверяющихЦентровWindows());

ssl4 = Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено );

ssl2 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаWindows(),
            Новый СертификатыУдостоверяющихЦентровФайл("C:/1/ssl306058.cloudflaressl.com"));      

СерверИсточник = "oanda.com";
//Соединение=Новый HTTPСоединение(СерверИсточник,,,,,,ssl2);
Соединение=Новый HTTPСоединение(СерверИсточник,,,,,Истина);
ИмяВременногоФайла=ПолучитьИмяВременногоФайла("tmp");
Соединение.Получить("/currency/table?date=2016&date_fmt=us&exch=EUR&sel_list=CZK_PLN_RUB_UAH&value=1&format=HTML&redirected=1", ИмяВременногоФайла);
32 Pistol
 
18.05.16
13:33
Как у вас там в 1С все сложно...

КопироватьФайл("https://www.oanda.com/currency/table?date=05/18/16&date_fmt=normal&exch=ADF&sel_list=CAD&value=1&format=CSV&redirected=1";, "D:\123.txt");
33 Not1C
 
18.05.16
13:38
(32) это помогло,спасибо
34 Широкий
 
18.05.16
13:38
(31) Слепой что ли? Тебе ошибку на совсем другое выдает
35 Not1C
 
18.05.16
13:39
(34) Может и слепой. Грубить зачем?
36 Широкий
 
18.05.16
13:40
(35) Да потому что ты сварщик.
Заголовки не передаешь - вот и ругается
37 Not1C
 
18.05.16
13:40
Спасибо всем за помощь
38 Not1C
 
18.05.16
13:41
сами себе противоречите ) то слепой,то свварщик
Где моя ошибка?
39 Not1C
 
18.05.16
13:44
"Заголовки не передаешь - вот и ругается"
где я должен их передавать? уже посмотрел справку по двум
HTTPСоединение() и Соединение.Получить()
40 Широкий
 
18.05.16
13:44
(38) Не искушай меня, я тебе ведь целый список вывалю
41 Широкий
 
18.05.16
13:45
HTTP=Новый HTTPСоединение(СерверИсточник,,,,,Истина);
        HTTP.Получить(СтрокаПараметраПолучения, ИмяВходящегоФайла, ЗаголовкиЗапроса);
42 Not1C
 
18.05.16
13:48
Я специально проверил, прошу прощения
http://i79.fastpic.ru/big/2016/0518/31/a86c8b43c2cdf6fa0335768f07533831.jpg
43 Not1C
 
18.05.16
13:50
44 Широкий
 
18.05.16
13:52
Это называется посмотрел подсказку.
Некоторые парметры остаются для совместимости.

Вот у меня чудо: https://yadi.sk/i/TCL3J25rroU5b
45 Not1C
 
18.05.16
13:53
я из этой обработки вытягивал код
46 Not1C
 
18.05.16
13:54
там для проверки можно вставить http запрос в брайзер. Вот он перестал работать. Примерно месяца полтора назад
47 Широкий
 
18.05.16
13:55
(46) ну вот смотри (44) - изменил одну строку и заработало
48 Not1C
 
18.05.16
13:57
49 Serginio1
 
18.05.16
14:05
50 Pistol
 
18.05.16
14:20
(49) Активист-евангелист, ты бы сравнил сложность решений из (49) и (32)

1С не знаем, так умных и модных технологий нагородим, эхэх...
51 Serginio1
 
18.05.16
14:23
(50) В 49 все легко и непринужденно. А ля JQuery.
Если ты про Get C# это просто? то оно ничем от 32 не будет отличаться
52 Serginio1
 
18.05.16
14:24
51+ Причем совсем не нужно сохранять в файл, а работать прямо с текстом. Причем можно прикрутить и GZip итд.
53 Локи-13
 
18.05.16
14:25
я решил проблему
у .com  есть одна проблема, это наличие WWW

    ssl = Новый ЗащищенноеСоединениеOpenSSL();  
    Соединение = Новый HTTPСоединение("http://www.oanda.com";,,,,,
                            5,// таймаут в секундах
                            ssl// защищенное HTTPS соединение
                            );
    ИмяВременногоФайла=ПолучитьИмяВременногоФайла("html");
    Запрос = Новый HTTPЗапрос;
    Запрос.АдресРесурса= "currency/table?date=05/18/16&date_fmt=normal&exch=ADF&sel_list=CAD&value=1&format=CSV&redirected=1";
    ответ = Соединение.Получить(Запрос, ИмяВременногоФайла);
54 Pistol
 
18.05.16
14:25
(52) Зачем?
55 Локи-13
 
18.05.16
14:27
(53) без http ессно, это миста хулиганит
56 Serginio1
 
18.05.16
14:30
(54) Если большие файлы таскать.
57 Pistol
 
18.05.16
14:31
(56) Вот кому они нужны, того и агитируй
58 Serginio1
 
18.05.16
14:34
(57) Я агитирую за простой и быстрый парсинг сайтов. При это с кучей примеров.
Только и всего.