0. angernaughts 115 20.11.14 15:25 Сейчас в теме

Парсинг сайта без использования встроенного браузера для начинающих

Данная статья показывает пример парсинга одного конкретного сайта со своей структурой, на основе которого можно понять суть, методы и без особых проблем парсить другие сайты.
Здесь описано: подключение к серверу, сохранение html-страницы на диск, загрузка и цикличный обход ее структуры, рекурсивный парсинг, загрузка картинок по ссылке на диск.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. Yashazz 2500 20.11.14 19:39 Сейчас в теме
Эхх... Опередил меня... Ну ладно, всё в дело, всё в копилку. Правда, я предпочитаю работать через HTTPRequest, и активно использую XPath.
2. angernaughts 115 21.11.14 12:47 Сейчас в теме
(1) Yashazz, Поделись. Я сам не так давно влез в это дело: появилась задача, начал гуглить, рыл, копал, нашел только про парсинг с браузером на форме. Случайно наткнулся на комментарий про DOM и решил поглядеть, что это. Для таких же, как я и написал эту статейку. Хотя бы вкратце опиши свой подход.
4. cool.vlad4 45 22.11.14 03:35 Сейчас в теме
(2) angernaughts, просто ради интереса. а сколько времени у вас ушло на написание этого парсера? и второй вопрос: сколько времени уйдет на починку парсера (примерно), в случае если изменится дизайн на сайте, т.е. поменяются теги и т.п.?
6. Yashazz 2500 22.11.14 20:11 Сейчас в теме
(2) angernaughts, (4) cool.vlad4, не раньше начала декабря. Ну или могу совсем куски кода вывалить. Парсинг с браузером вообще не катит ввиду совсем устаревшего встроенного браузера, и ввиду того, что многие сайты такие заходы считают ботами и банят. Могу самое общее сюды выложить. Сделать?

Достраиваю до валидного игрищами с DOM, копирую-импортирую узлы, нормализую... Всякие извраты чисто средствами 1С, и прокатывает. XPath нормально пашет.

Картинки читаю GET-запросом. Структуру, если меняется, реадаптирую за 10-15 минут, давеча тренировался на парочке порносайтов)))
9. Bublik2011 9 24.11.14 17:18 Сейчас в теме
(2) angernaughts, у меня тоже "захотелось" ДокументХТМЛ распарсить с помощью XPATH , который дает преимущества при парсинге. Но рассматривать HTML верстку как MXL мне не удалось, пришлось поступить еще проще и без многочисленных итераций поиска по DOM элементам.

http://forum.infostart.ru/forum24/topic114816/message1242204/#message1242204

В этом-же посте ссылка на софт и описание
3. cool.vlad4 45 22.11.14 03:31 Сейчас в теме
(1) Yashazz, любопытно, а чем достраиваешь html до валидного xml в 1С? не в 1С я знаю библиотек вагон и маленькую тележку. ну и часть из них я использую.
5. Поручик 4292 22.11.14 18:27 Сейчас в теме
(0) Загружать картинки можно без com-объектов. Даже нужно. http://forum.aeroion.ru/topic749.html
angernaughts; ZOMI; BigB; +3 Ответить
7. V_V_V 22.11.14 23:06 Сейчас в теме
Уж сильно заточено под конкретный сайт... Структуру которого тоже, как справедливо было замечено, никто не мешает изменить в любое удобное для владельца время...
Но тем не менее работа проделана большая, плюс не жалко. Как учебный материал статья отличная.
8. Поручик 4292 24.11.14 09:01 Сейчас в теме
(7) Универсальный парсер для любого сайта сделать невозможно. Можно сделать только разбор структуры, которая ничего не даст с практической точки зрения.
rpgshnik; Boudybuilder; +2 Ответить
27. Boudybuilder 59 05.01.15 01:31 Сейчас в теме
(8) Поручик, вы правы! Действительно, были ко мне такие вопросы, чтобы сделать универсальный парсер с настройками. Но не получается. Но, если разбирать детальную страницу товара , а не парсить весь сайт целиком , то можно. Например у меня парсер есть где я могу почти под любой сайт настроить загрузку изображений ,детального описания или строки поиска.
10. monsta 57 24.11.14 19:51 Сейчас в теме
А на каком сервисе картинка публикации сделана? Со звездой которая...
11. angernaughts 115 25.11.14 10:23 Сейчас в теме
(10) monsta, https://tagul.com/
(4) cool.vlad4, я имею некоторые знания в верстке сайта, поэтому база, на которой я строил парсер уже была. За пару часов накатал. Статью дольше писал. А починить парсер, да вообще не проблема. У такого типа сайтов вряд ли часто изменяется дизайн (хтмл-код), поэтому, вряд ли придется часто допиливать.
(5) Поручик, да, спасибо, мой метод - просто как костыль.
12. karpik666 2629 25.11.14 10:56 Сейчас в теме
Подскажите, как получить через httpСоединение страницу, по пути без явного указания типа страницы, например, если взять инфостарт, то здесь "https://infostart.ru/public/314045/" по нему невозможно получить страницу с помощью запроса, пишет, что такая страница не найдена.
13. Поручик 4292 25.11.14 11:29 Сейчас в теме
(12) Я же функцию выше дал. С помощью неё я дёргаю с некоего сайта страницы для разбора на части и картинки для записи в базу.
karpik666; +1 Ответить
14. angernaughts 115 25.11.14 11:39 Сейчас в теме
(12) karpik666, Скорее всего, здесь идет переадресация. В теле полученного файла или в куки посмотри, там должны быть какие-то намеки. Очень хорошо расписано по ссылке в комментарии (5), там даже есть разбор такой ситуации.
15. monsta 57 26.11.14 21:13 Сейчас в теме
Метод неплохой - может выручить по-быстрому
Если работать плотнее то все эти кудрявые Если ЭлементTD.ИмяКласса = "item" лучше уместить в одну строку в XDTO или CSS селекторах
32. TheProW 23.05.16 11:38 Сейчас в теме
{Обработка.Обработка1.Форма.Форма.Форма(15)}: Значение не является значением объектного типа (Получить)
Соединение.Получить(Каталог, ИмяФайла);
16. Sykoku 91 27.11.14 12:21 Сейчас в теме
Изобретатели самокатов...

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

Своровать описание товаров с сайта можно и быстрее и проще. Но не в 1С.
17. angernaughts 115 27.11.14 13:05 Сейчас в теме
(16) Sykoku, а в 1С всегда так - где-нибудь что-нибудь обновили - переписывай.
Если вы хотите парсить развлекательные сайты, где куча всяких навороченных фич - эта статья не для вас. А для разбора товаров с сайта поставщика - весьма неплохо.
18. Sykoku 91 27.11.14 13:52 Сейчас в теме
(17) angernaughts,

"Парсить сайт поставщика" - это что, для поиска товаров и их описания?! - Даже комментировать не буду...
20. angernaughts 115 27.11.14 15:00 Сейчас в теме
(18) Sykoku, читайте хотя бы часть текста публикации перед комментированием.
21. monsta 57 27.11.14 19:31 Сейчас в теме
(18) Sykoku, а почему не будете комментировать? И как бы хорошо заявлять, что api использовать правильнее чем скрапинг - ну покажите нам его на brass.ru тогда пожалуйста. Про то что "не на 1С" это сделать проще - это понятно. Зацените как это можно сделать на 1С!
19. Elisy 913 27.11.14 14:25 Сейчас в теме
Может, кому-то пригодится опыт по аналогичному решению, но без привязки к конкретному веб-сайту
http://infostart.ru/public/261354/
rpgshnik; monsta; +2 Ответить
22. monsta 57 27.11.14 19:32 Сейчас в теме
Поддержу (19) там все посерьезнее конечно.
23. NOVOPRO 11.12.14 08:01 Сейчас в теме
Выдает глюк при выполнение процедуры и не получается в итоге с ней работать............
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Сервер = "www.brass.ru";
КаталогЗагрузки = "C:/1c82/brass";
Соединение = Новый HTTPСоединение(Сервер);
24. angernaughts 115 11.12.14 14:59 Сейчас в теме
26. monsta 57 17.12.14 21:30 Сейчас в теме
Им отвечаешь что-то в стиле (24), а тебе опять "срочно почините работа встала!!!" и опять тишина....
25. monsta 57 17.12.14 21:30 Сейчас в теме
Классическое описание проблемы пользователем, лол.
28. kolp821 15.05.15 15:13 Сейчас в теме
Не могу понять этот кусок кода, помогите разобраться

Н = 1;
Пока Н 1000 Тогда
Прервать;
КонецЕсли;
Н = Н + 1;
КонецЦикла;
29. karpik666 2629 15.05.15 15:41 Сейчас в теме
(28) kolp821, А что понимать, код видимо не верен, в принципе должно быть так
Н = 1; 
Пока Истина Цикл
Если Н > 1000 Тогда 
Прервать; 
КонецЕсли; 
Н = Н + 1; 
КонецЦикла;
Показать
30. s_uu 20 08.08.15 13:43 Сейчас в теме
На управляемых формах не открывается!
31. Maximuss 01.03.16 18:29 Сейчас в теме
33. echo77 1081 22.02.17 16:06 Сейчас в теме
Что делать, если в HTML-документе есть скрипт, который выполняется после загрузки страницы и достраивает ее содержимое?
rpgshnik; +1 Ответить
34. angernaughts 115 22.02.17 22:22 Сейчас в теме
(33) Сейчас уже есть куча новых технологий, позволяющих делать все лучше и быстрее. Самый правильный выход здесь - создать прослойку с помощью другого программного обеспечения, которое бы парсило и сводило данные с разных источников к одному формату, который скармливался бы конфиге. Для ситуации, описанной в вашем вопросе, лучше всего подошел бы парсер на nodejs. Конечно, появляется потребность изучать сторонние технологии, но если мы не развиваемся - значит мы деградируем)
Gang031; rpgshnik; echo77; +3 Ответить
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Консультант 1С
Нижний Новгород
зарплата до 100 000 руб.
Полный день

Программист стажер 1С
Нижний Новгород
зарплата от 30 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 100 000 руб.
Полный день