У меня часто возникает задача парсинга сайтов (интернет магазинов). Естественно, что сохранять картинки — обязательный функционал любой обработки для парсинга. До версии 8.2.18 я делал так как описано в этой статье.
Но теперь я считаю тот метод парсинга в корне неверным и когда созрею для новой статьи — удалю старую.
Основы работы с HTTPСоединение выможете почитать тут
Что еще хотелось бы добавить, так это то, что у объекта HTTPОтвет есть метод ПолучитьТелоКакДвоичныеДанные()
Им то мы и воспользуемся для сохранения картинки с сайта. Если вкратце — код должен выглядить следующим образом:
Соединение = Новый HTTPСоединение(АдресСервера);
Запрос = Новый HTTPЗапрос(АдресКартинки);
Ответ = Соединение.Получить(Запрос);
ДвоичныеДанныеКартинки = Ответ.ПолучитьТелоКакДвоичныеДанные();
Что делать с двоичными данными — я думаю ясно.
Полный код обработки Вы можете посмотреть во вложении, а также:
- Как отобразить картинку сайта на ПолеКартинки
- Как сохранить картинку в файл
- Как определить формат загружаемой картинки
А если подключить немного фантазии и кода — можно сохранять любые файлы (доступные для загрузки) по протоколу HTTP.
Вот и все. Ставьте плюсы, вопросы пишите в комментариях. С Вами был opx.
тем не менее ставлю +
и если автор позволит — небольшое дополнение по теме — скопировать файл к себе на локальный диск:
(1) sdn-1, Если честно — не думал, что можно так просто скопировать файл.
Но тем не менее:
1. Предложенный Вами способ не позволяет скачать файл от туда, где необходима авторизация.
2. Когда парсишь много товаров и картинок — заливать картинку через сохранение в файл дольше, нежели через двоичные данные.
А в целом: Возьму на заметку. Спасибо.
Вариант синтаксиса: По адресу
Синтаксис:
Получить(<Источник>, <ИмяВыходногоФайла>, <Заголовки>)
Параметры:
<Источник> (обязательный)
Тип: Строка.
Адрес ресурса на сервере.
<ИмяВыходногоФайла> (обязательный)
Тип: Строка.
Имя файла, в который помещаются данные полученного ресурса.
Описание варианта метода:
Получает ресурс по адресу.
Если код статуса HTTP, возвращенный сервером, >= 400, вызывается исключение.
Показать
Не совсем понял про авторизацию — что здесь имеется в виду ?
Есть общедоступные каталоги где все на виду — забираем что нам нужно.
(4) sdn-1,
(5) deniseek77,
да — насчет авторизации понял — посмотрел ссылки на предыдущие статьи автора и ваши тоже — большое спасибо автору — тема интересная
(5)
не работает уже. 1С сделали более суровую авторизацию…
Уважаемые программисты,
Кто-то из Вас уже решал такую задачу:
Есть файл *.хls в нем есть два поля: Артикул и Ссылка на интернет страницу которая содержит Картинку соответствующую этому артикулу. Необходимо автоматически залить картинки в Базу 1С 8.2 УТ 10.3?
Если есть готовые решения, поделитесь пожалуйста.
А как быть с gif-картинкой, ее не отображает?
(8) letchik2000, если в файле есть артикул и ссылка на саму картинку, то у меня есть обработка, но если ссылка не на картинку, а на страничку, где располагается картинка, то надо дописать парсер для выделения ссылки на картинку.
(10) CrackedBone, здравствуйте! сколько стоит ваш парсер? для того, чтобы добавить фото товаров из файла xls содержащего ссылки на страницу товара на сайте поставщика в Базу 1С 8.2 УТ 10.3
Простенькая и хорошая обработочка. Скачал только для того, чтобы узнать разширение картинки. А оказывается все элементарно: создаешь картинку из двоичных данных и на этом все, далее работаешь с картинкой.
(10) CrackedBone, Здравствуйте. Как можно приобрести ваш парсер? Будет ли работать в УНФ 1.6?
Для парсинга HTML можно использовать.Net в 1С. На примере использования HTTPClient,AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция
Вот пример поиска картинокПарсинг картинок с сайта
Для получения атрибута нужно применить следующий код
Спасибо!
Добрый день, почему то не могу скачать нужную картинку по данной ссылкиhttp://maki74.ru/wp-content/uploads/2016/02/102.jpg показывает только X
(16) потому что защищенное соединение. А в примере обычное.
Спасибо уже разобрался
А если защищенное соединение — то загрузить не получится?
Павел, а, наоборот, загрузить картинку из 1С на хостинг картинок (подойдёт любой), и в итоге получить ссылку на картинку — не приходилось ли решать такую задачу?
(20) Можно и наоборот грузить. HTTPСоединение вообще предоставляет большие возможности.
(18)
Не подскажете как разобрались? Такая же проблема. с https не могу скачать картинку.
HTTPСоединение = Новый HTTPСоединение(АдресСервера,443,,,,,Новый ЗащищенноеСоединениеOpenSSL(), Ложь);
для https — защищенного соединения.
Подскажите можно ли при помощи коннектора вызвать событие onclick у ссылки?