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

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

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

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

Комментарии
Избранное Подписка Сортировка: Древо
1. Yashazz 2502 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 2502 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. Поручик 4294 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. Поручик 4294 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 2634 25.11.14 10:56 Сейчас в теме
Подскажите, как получить через httpСоединение страницу, по пути без явного указания типа страницы, например, если взять инфостарт, то здесь "https://infostart.ru/public/314045/" по нему невозможно получить страницу с помощью запроса, пишет, что такая страница не найдена.
13. Поручик 4294 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 2634 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С и бухучета
Санкт-Петербург
По совместительству

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

Руководитель проекта, аналитик, консультант
Санкт-Петербург
По совместительству

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

Бизнес-аналитик 1С
Москва
зарплата от 140 000 руб. до 200 000 руб.
Полный день