Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Парсер сайта и код ошибки 301          
kosalex Подменю пользователя
сообщение 19.01.18, 21:09
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Доброго времени суток! Пишу обработку для парсинга сайта bestchange.ru

Есть такой код:
Сервер = "bestchange.ru";
    
    КаталогЗагрузки = "D:/Bestchange_parser";
    Соединение = Новый HTTPСоединение(Сервер,,,,,,Новый ЗащищенноеСоединениеOpenSSL);
    
    ЧтениеХТМЛ = Новый ЧтениеHTML;
    ПостроительДОМ = Новый ПостроительDOM;
    //Генерируем имя файла на диске, в который запишется страница сайта
    ИмяФайла = КаталогЗагрузки + "/Give/" + "give.html";
    //Загружаем нужную нам страницу в каталог
    
    Ресурс = "bestchange.ru";
    Ответ = Соединение.Получить(Ресурс, ИмяФайла);
    //Начинаем чтение нашего файла
    ЧтениеХТМЛ.ОткрытьФайл(ИмяФайла, "UTF-8");
    //Загружаем всю структуру документа в DOM                                                                                        
    ДокументХТМЛ = ПостроительДОМ.Прочитать(ЧтениеХТМЛ);
    
    //Получаем все элементы TABLE
    ЭлементыTABLE = ДокументХТМЛ.ПолучитьЭлементыПоИмени("curr_tab");


В переменной "Ответ" получаю 301, адрес в заголовке 'Location' становиться "https://www.bestchange.ru/https://bestchange.ru", в общем проблема в том что эта переменная меняется, если отправлю значение переменной location, то "Ответ" будет опять 301 но уже "https://www.bestchange.ru/https://bestchange.ru/https://www.bestchange.ru/https://bestchange.ru"

как получить содержимое сайта?

logist Подменю пользователя
сообщение 19.01.18, 21:33
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

301 это не ошибка, вам в ответе возвращают "новый" адрес сайта, надо выполнить на него переход, или запрашивать сразу этот адрес (вероятно изначально ваш запрос идет на http://)


Signature
Личные бесплатные консультации не даю, для этого есть форум!

kosalex Подменю пользователя
сообщение 19.01.18, 22:05
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

logist @ Сегодня, 21:33 * ,

Сервер = "bestchange.ru";
    КаталогЗагрузки = "D:/Bestchange_parser";
    Соединение = Новый HTTPСоединение(Сервер,,,,,,Новый ЗащищенноеСоединениеOpenSSL);
    
    ЧтениеХТМЛ = Новый ЧтениеHTML;
    ПостроительДОМ = Новый ПостроительDOM;
    
    
    //Генерируем имя файла на диске, в который запишется страница сайта
    ИмяФайла = КаталогЗагрузки + "/Give/" + "give.html";
    
    //Загружаем нужную нам страницу в каталог
    Ресурс = "www.bestchange.ru";
    Заголовки = Новый Соответствие;
    Запрос = Новый HTTPЗапрос(Ресурс,Заголовки);
    Ответ = Соединение.Получить(Запрос, ИмяФайла);
    
    Если Ответ.КодСостояния = 301 Тогда
        Ответ = Соединение.Получить(Ответ.Заголовки.Получить("Location"),ИмяФайла);    
    КонецЕсли;
    
    //Начинаем чтение нашего файла
    ЧтениеХТМЛ.ОткрытьФайл(ИмяФайла, "UTF-8");
    //Загружаем всю структуру документа в DOM                                                                                        
    ДокументХТМЛ = ПостроительДОМ.Прочитать(ЧтениеХТМЛ);
    
    //Получаем все элементы TABLE
    ЭлементыTABLE = ДокументХТМЛ.ПолучитьЭлементыПоИмени("curr_tab");


Переменная Location при Ресурс = "www.bestchange.ru" становиться "https://www.bestchange.ru/www.bestchange.ru", при переходе на "https://www.bestchange.ru/www.bestchange.ru", становится "https://www.bestchange.ru/https://www.bestchange.ru/www.bestchange.ru".

Если Ресурс = "https://www.bestchange.ru", то Location будет равна "https://www.bestchange.ru/https://www.bestchange.ru", при переходе по этому адресу Location = "https://www.bestchange.ru/https://www.bestchange.ru/https://www.bestchange.ru"

Как же быть?))

Плиз, помогите! Ведь код есть, просто скопировать и попробовать. У меня уже нет вариантов как получить эту страницу... перепробовал все что было в голове... :-(

logist Подменю пользователя
сообщение 19.01.18, 22:27
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Возможно это защита от парсинга, вы не идентифицируете себя как браузер, поэтому так, попробуйте задать заголовки которые соответствуют какому-то браузеру. Обратитесь в поддержку сайта, это самый быстрый путь выяснить причину, т.к. код визуально рабочий, проверить его можно путем указания любого другого сайта (который явно не играется с перенаправлениями)


Signature
Личные бесплатные консультации не даю, для этого есть форум!

kosalex Подменю пользователя
сообщение 19.01.18, 22:33
Сообщение #5

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

logist @ Сегодня, 22:27 * ,
ТП не отвечает) наверное этот вопрос не связан с курсами и проблемами обменников) по этому и игнор. Заголовки пробую в данный момент) Опишусь.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 1:55
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!