gifts2017

Загрузка картинок с сайта из 1С (HTTPСоединение)

Опубликовал Павел Опарин (opx) в раздел Обмен - Интеграция с WEB

В этой статье я объясню как сохранять картинки сайта с помощью 1С. Для этого буду использовать встроенные объекты 1С (HTTPСоединение, HTTPЗапрос, HTTPОтвет).

У меня часто возникает задача парсинга сайтов (интернет магазинов). Естественно, что сохранять картинки - обязательный функционал любой обработки для парсинга. До версии 8.2.18 я делал так как описано в этой статье.

Но теперь я считаю тот метод парсинга в корне неверным и когда созрею для новой статьи - удалю старую.

Основы работы с HTTPСоединение выможете почитать тут

Что еще хотелось бы добавить, так это то, что у объекта HTTPОтвет есть метод ПолучитьТелоКакДвоичныеДанные()
Им то мы и воспользуемся для сохранения картинки с сайта. Если вкратце - код должен выглядить следующим образом:

    Соединение = Новый HTTPСоединение(АдресСервера);
    Запрос = Новый HTTPЗапрос(АдресКартинки);
    Ответ = Соединение.Получить(Запрос);
    ДвоичныеДанныеКартинки = Ответ.ПолучитьТелоКакДвоичныеДанные();

Что делать с двоичными данными - я думаю ясно.

Полный код обработки Вы можете посмотреть во вложении, а также:

  1. Как отобразить картинку сайта на ПолеКартинки
  2. Как сохранить картинку в файл
  3. Как определить формат загружаемой картинки

А если подключить немного фантазии и кода - можно сохранять любые файлы (доступные для загрузки) по протоколу HTTP.

Вот и все. Ставьте плюсы, вопросы пишите в комментариях. С Вами был opx.

Скачать файлы

Наименование Файл Версия Размер
СохранитьКартинкуССайта 185
.epf 7,12Kb
09.02.14
185
.epf 7,12Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Дмитрий Шиндориков (sdn-1) 10.02.14 18:00
http://gortent.ru/img/dwn.png - там такой картинки вроде бы нету... ?

тем не менее ставлю +

и если автор позволит - небольшое дополнение по теме - скопировать файл к себе на локальный диск:

СсылкаФото = "http://gortent.ru/img/dwn.png";
КопироватьФайл (СсылкаФото, "С:\dwn.png");
2. Павел Опарин (opx) 10.02.14 18:18
(1) sdn-1, Если честно - не думал, что можно так просто скопировать файл.
Но тем не менее:
1. Предложенный Вами способ не позволяет скачать файл от туда, где необходима авторизация.
2. Когда парсишь много товаров и картинок - заливать картинку через сохранение в файл дольше, нежели через двоичные данные.
А в целом: Возьму на заметку. Спасибо.
3. Александр Жигурт (jigourt) 10.02.14 18:31

Вариант синтаксиса: По адресу

Синтаксис:

Получить(<Источник>, <ИмяВыходногоФайла>, <Заголовки>)
Параметры:

<Источник> (обязательный)

Тип: Строка.
Адрес ресурса на сервере.
<ИмяВыходногоФайла> (обязательный)

Тип: Строка.
Имя файла, в который помещаются данные полученного ресурса.

Описание варианта метода:

Получает ресурс по адресу.
Если код статуса HTTP, возвращенный сервером, >= 400, вызывается исключение.
4. Дмитрий Шиндориков (sdn-1) 10.02.14 18:38
Не совсем понял про авторизацию - что здесь имеется в виду ?
Есть общедоступные каталоги где все на виду - забираем что нам нужно.
6. Дмитрий Шиндориков (sdn-1) 11.02.14 08:07
(5) deniseek77,

да - насчет авторизации понял - посмотрел ссылки на предыдущие статьи автора и ваши тоже - большое спасибо автору - тема интересная
7. Андрей Акулов (DrAku1a) 11.02.14 10:32
(5)не работает уже. 1С сделали более суровую авторизацию...
8. Алекс Алекс (letchik2000) 30.10.14 21:25
Уважаемые программисты,
Кто-то из Вас уже решал такую задачу:
Есть файл *.хls в нем есть два поля: Артикул и Ссылка на интернет страницу которая содержит Картинку соответствующую этому артикулу. Необходимо автоматически залить картинки в Базу 1С 8.2 УТ 10.3?

Если есть готовые решения, поделитесь пожалуйста.
9. Илья (husky) 03.11.14 00:06
А как быть с gif-картинкой, ее не отображает?
10. CrackedBone Bone (CrackedBone) 01.12.14 16:55
(8) letchik2000, если в файле есть артикул и ссылка на саму картинку, то у меня есть обработка, но если ссылка не на картинку, а на страничку, где располагается картинка, то надо дописать парсер для выделения ссылки на картинку.
11. Ирина Тарасова (i.s.leo) 04.04.15 21:26
(10) CrackedBone, здравствуйте! сколько стоит ваш парсер? для того, чтобы добавить фото товаров из файла xls содержащего ссылки на страницу товара на сайте поставщика в Базу 1С 8.2 УТ 10.3
12. Максим Чичин (maxan) 30.07.15 14:48
Простенькая и хорошая обработочка. Скачал только для того, чтобы узнать разширение картинки. А оказывается все элементарно: создаешь картинку из двоичных данных и на этом все, далее работаешь с картинкой.
13. alan alan (alan53) 01.06.16 15:44
(10) CrackedBone, Здравствуйте. Как можно приобрести ваш парсер? Будет ли работать в УНФ 1.6?
14. Сергей Смирнов (Serginio) 01.06.16 17:56
Для парсинга HTML можно использовать .Net в 1С. На примере использования HTTPClient,AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция

Вот пример поиска картинок Парсинг картинок с сайта


Для получения атрибута нужно применить следующий код

Картинки = doc.QuerySelectorAll("img[src]");

Для каждого стр из Картинки Цикл
	адрес=Врап.ПолучитьИнтерфейс(стр,"IElement").GetAttribute("src");
	
КонецЦикла
...Показать Скрыть
redscrest; +1 Ответить
15. александр (whtblck) 10.06.16 12:39