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

1. SprayTM 21.10.19 14:07 Сейчас в теме
Делал по примеру https://infostart.ru/public/314045/

Не выводится каталог на форму. При выполнении строки ДокументХТМЛ = ПостроительДОМ.Прочитать(ЧтениеХТМЛ); в заголовок передается значение "301 Moved Permanently"

Как это можно победить?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
3. spacecraft 21.10.19 15:14 Сейчас в теме +0.16 $m
(1) самый частый случай 301 это обращение по протоколу http, а требуется по https. Проверьте.
8. uno-c 235 23.10.19 14:52 Сейчас в теме +0.17 $m
(6)Посмотрите ответ на изначальный запрос, без защищенного соединения. В ответе помимо кода 301 должен прийти заголовок Location - куда была перемещена страница.
Например, вместо
//Загружаем нужную нам страницу в каталог
Соединение.Получить(Каталог, ИмяФайла);
//Начинаем чтение нашего файла

нужно еще заголовок посмотреть
//Загружаем нужную нам страницу в каталог
ХТТПОтвет = Соединение.Получить(Каталог, ИмяФайла);
Сообщить(ХТТПОтвет.Заголовки.Location);
//Начинаем чтение нашего файла
9. uno-c 235 23.10.19 15:08 Сейчас в теме
(8)Кроме того, обратите внимание, что Каталог - это не полный путь к странице, а путь без указания протокола и имени сервера, которое у Вас в строке Сервер = "www.brass.ru". Например, если получаете страницу "https://forum.infostart.ru/forum9/topic228200", то Сервер = "forum.infostart.ru", а Каталог = "/forum9/topic228200". Соответственно
Соединение = Новый HTTPСоединение(Сервер,,,,,,Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос(Каталог); 
Ответ = Соединение.Получить(Запрос);
10. uno-c 235 23.10.19 15:42 Сейчас в теме
(8)
Сообщить(ХТТПОтвет.Заголовки.Location);
Неверно написал, Заголовки - это соответствие, а не структура, т.е. Сообщить(ХТТПОтвет.Заголовки["Location"]);
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. spacecraft 21.10.19 15:14 Сейчас в теме +0.16 $m
(1) самый частый случай 301 это обращение по протоколу http, а требуется по https. Проверьте.
4. SprayTM 22.10.19 08:17 Сейчас в теме
(3) сделал защищенное соединение- всё заработало. Но теперь при проходе по каталогу моего сайта, не заполняется файл в каталоге на диске. Точнее не заполняется таблица при проходе этой строки ЭлементыUL = ДокументХТМЛ.ПолучитьЭлементыПоИмени("ul"); в примере вот так ЭлементыTABLE = ДокументХТМЛ.ПолучитьЭлементыПоИмени("TABLE");
5. Serg O. 263 23.10.19 10:27 Сейчас в теме
(1)
301 Moved Permanently

Код состояния HTTP 301 или Moved Permanently (с англ. — «Перемещено навсегда»)

1) возможно ошибка в адресе сайта... или параметрах
2) может сайт перевели на SSH http:// -> https://
3) сохраните страницу в файл и уже чтение из файла сделать... иногда помогает
6. SprayTM 23.10.19 11:42 Сейчас в теме
(5) вот как раз чтение из создаваемого файла 1с не может провести. Пишет что файл не найден, но сам файл создается и имеет вес, правда очень маленький(6 кб). Если открыть файл, то он показывает страницу 404
8. uno-c 235 23.10.19 14:52 Сейчас в теме +0.17 $m
(6)Посмотрите ответ на изначальный запрос, без защищенного соединения. В ответе помимо кода 301 должен прийти заголовок Location - куда была перемещена страница.
Например, вместо
//Загружаем нужную нам страницу в каталог
Соединение.Получить(Каталог, ИмяФайла);
//Начинаем чтение нашего файла

нужно еще заголовок посмотреть
//Загружаем нужную нам страницу в каталог
ХТТПОтвет = Соединение.Получить(Каталог, ИмяФайла);
Сообщить(ХТТПОтвет.Заголовки.Location);
//Начинаем чтение нашего файла
9. uno-c 235 23.10.19 15:08 Сейчас в теме
(8)Кроме того, обратите внимание, что Каталог - это не полный путь к странице, а путь без указания протокола и имени сервера, которое у Вас в строке Сервер = "www.brass.ru". Например, если получаете страницу "https://forum.infostart.ru/forum9/topic228200", то Сервер = "forum.infostart.ru", а Каталог = "/forum9/topic228200". Соответственно
Соединение = Новый HTTPСоединение(Сервер,,,,,,Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос(Каталог); 
Ответ = Соединение.Получить(Запрос);
10. uno-c 235 23.10.19 15:42 Сейчас в теме
(8)
Сообщить(ХТТПОтвет.Заголовки.Location);
Неверно написал, Заголовки - это соответствие, а не структура, т.е. Сообщить(ХТТПОтвет.Заголовки["Location"]);
12. SprayTM 24.10.19 06:13 Сейчас в теме
(10) хотите сказать, что в примере изначально была неправильно описана инструкция получения каталога, и я напрасно себе кипятил мозг?
7. uno-c 235 23.10.19 14:39 Сейчас в теме
(5)
сайт перевели на SSH http:// -> https://
ssh и https - это штуки независимые друг от друга.
13. Serg O. 263 01.11.19 09:48 Сейчас в теме
(7) да, не SSH... я имел ввиду защищённое соединение SSL, а не SSH

т.е. надо использовать последний параметр при создании соединения
Соединение = Новый HTTPСоединение(<Сервер>, <Порт>, <ИмяПользователя>, <Пароль>, <Прокси>, <ЗащищенноеСоединение>)

Защищенное (IsSecure) - Определяет использование протокола http или https.
Истина - https.

или надо в последний параметр писать не Истина, а "Новый ЗащищенноеСоединениеOpenSSL"
14. Serg O. 263 01.11.19 09:50 Сейчас в теме
(13) возможно ещё порт не стандартный... прокси не задан... или таймаут увеличить надо

Новый HTTPСоединение(<Сервер>, <Порт>, <ИмяПользователя>, <Пароль>, <Прокси>, <Таймаут>, <ЗащищенноеСоединение>)
2. comptr 31 21.10.19 14:49 Сейчас в теме
Если сделать HTTP запрос к загружаемой странице, то в ответе должен быть адрес, куда переместили.
11. Smartpk 9 23.10.19 17:06 Сейчас в теме
Нужно выполнять запросы по адресу, указанному в Location, до тех пор, пока не придет ответ без Location. Ну и использовать защищенное соединение, если это необходимо (как уже писали выше)
15. пользователь 24.04.24 16:37
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

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