Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Универсальный парсер web сайтов / 16 сообщений из 16, страница 1 из 1
02.02.2021, 16:13
    #40040921
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
Интересует мнение знающих людей насколько трудоемким будет написание такого парсера.

Технические подробности такие. Стек .Net, язык реализации C#. Парсер должен быть в виде DLL которую вызывает ERP система. В парсер передается следующий набор параметров:

1. URL web страницы которую парсим
2. Файл настроек парсера, который рассказывает как парсить этот сайт.
3. Путь к Excel файлу в который записываются распарсенные данные.

Чтобы обучить парсер извлекать данные с нового сайта, нужно создать файл настроек для этого сайта, а не переписывать код парсера.

Какие технологии, фреймворки лучше использовать для такой задачи?
...
Рейтинг: 0 / 0
02.02.2021, 17:22
    #40040935
Никанор Кузьмич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
Eolt
Технические подробности такие.
- это не "технические подробности", это вода. Извлекать данные из HTML не проблема (и из json не проблема). Вся соль в том, что на разных сайтах данные могут быть расположены сильно по-разному, и писать универсальный парсер, который понимает любые правила, можно до бесконечности. А разрабы сайтов тоже не будут на месте сидеть, и будут все свое добро по 100 раз переписывать.
...
Рейтинг: 0 / 0
02.02.2021, 17:54
    #40040943
listtoview
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
сделаю за месяц
Бюджет 1млн руб

работу яваскрипта в результирующей странице не гарантирую, т.к может быть заточен под домен и сервер
...
Рейтинг: 0 / 0
02.02.2021, 19:02
    #40040969
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
Если ты не гугл и не яндекс, то тебя забанят на том сайте, в лучшем случае, в худшем - гавном накормят. Все уважающие себя сайты отслеживают таких парсеров.

Правильных путь: обратиться к владельцам сайта и спросить как по их мнению правильно брать у них инфу.
...
Рейтинг: 0 / 0
03.02.2021, 00:18
    #40041010
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
Eolt
Интересует мнение знающих людей насколько трудоемким будет написание такого парсера.

Особых проблем нет - selenium + маленький скрипт, который нажмет нужные кнопки, почти :) автоматом делается (если капч и прочего колдунства нет)
Технические подробности такие. Стек .Net, язык реализации C#.

Это не имеет значения
Парсер должен быть в виде DLL которую вызывает ERP система. В парсер передается следующий набор параметров:

1. URL web страницы которую парсим
2. Файл настроек парсера, который рассказывает как парсить этот сайт.
3. Путь к Excel файлу в который записываются распарсенные данные.

Чтобы обучить парсер извлекать данные с нового сайта, нужно создать файл настроек для этого сайта, а не переписывать код парсера.

Какие технологии, фреймворки лучше использовать для такой задачи?
С п.1 - проблем почти не будет, по сравнению с остальным
С п.2 - у Вас будет DOM (если п.1 отработает), его можно превратить в xml, потом обработать xslt, который можно понимать как файл настройки парсера.
По результатам п.2 можно получить csv, который легко переносится в xls

Вот с п.2 я вижу небольшую проблему - написать xslt, который выполнит необходимое, может быть труднее, чем создать аналогичный код на императивном языке (C#, например), но, формально, ТЗ соблюдено :)
...
Рейтинг: 0 / 0
03.02.2021, 01:19
    #40041021
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
Eolt,

Забыл написать: похоже, в нашем мире существует соотношение неопределенностей - произведение универсальности на эффективность должно быть меньше некоторого проклятого числа :)
Нужно это проклятое число оценить или измерить.
...
Рейтинг: 0 / 0
03.02.2021, 15:58
    #40041246
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
x1ca4064

Особых проблем нет - selenium + маленький скрипт, который нажмет нужные кнопки, почти :) автоматом делается (если капч и прочего колдунства нет)


Selenium показывает окно браузера? Если да, то не пойдет

автор
С п.2 - у Вас будет DOM (если п.1 отработает), его можно превратить в xml, потом обработать xslt, который можно понимать как файл настройки парсера.

Не знал, что с помощью XSLT можно парсить HTML. Как быть с незакрытыми html тегами? Браузеры такое пропускают, но парсер же упадет.
...
Рейтинг: 0 / 0
03.02.2021, 18:28
    #40041311
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
Eolt


Selenium показывает окно браузера? Если да, то не пойдет


У него, вроде, есть headless режим


Не знал, что с помощью XSLT можно парсить HTML. Как быть с незакрытыми html тегами? Браузеры такое пропускают, но парсер же упадет.
Нет, прямо не получится, нужно сначала конвертировать в xml, как раз, чтобы теги стали нормальными - но это не очень сложная задача, по сравнению с выдумыванием нового языка для конфигурирования парсера.
...
Рейтинг: 0 / 0
03.02.2021, 22:12
    #40041378
Никанор Кузьмич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
Eolt
Selenium показывает окно браузера? Если да, то не пойдет
Если страница сначала загружается без данных, а потом наполняется данными с помощью javascript, то альтернатив у вас нет. Или Selenium, или сосите лапу. Если страница с данными приходит, то можно в теории ее распарсить... В java для этого есть библиотека jsoup, а что есть в вашем дотнете, поищите самостоятельно...
x1ca4064
У него, вроде, есть headless режим
Я пробовал его года 3 - 4 назад - глючил безбожно (в частности, неправильно находил элементы по CSS селектору). Интересно, стало ли лучше с тех пор...
...
Рейтинг: 0 / 0
08.02.2021, 14:49
    #40043303
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
Eolt
Не знал, что с помощью XSLT можно парсить HTML. Как быть с незакрытыми html тегами? Браузеры такое пропускают, но парсер же упадет

парсить HTML незачем, с DOM нужно работать

не нравятся окна - electron можно использовать
...
Рейтинг: 0 / 0
11.05.2021, 19:52
    #40069454
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
Eolt
Интересует мнение знающих людей насколько трудоемким будет написание такого парсера.

Технические подробности такие. Стек .Net, язык реализации C#. Парсер должен быть в виде DLL которую вызывает ERP система. В парсер передается следующий набор параметров:

1. URL web страницы которую парсим
2. Файл настроек парсера, который рассказывает как парсить этот сайт.
3. Путь к Excel файлу в который записываются распарсенные данные.

Чтобы обучить парсер извлекать данные с нового сайта, нужно создать файл настроек для этого сайта, а не переписывать код парсера.

Какие технологии, фреймворки лучше использовать для такой задачи?

Увы, Вы ничего не поняли.
...
Рейтинг: 0 / 0
12.05.2021, 17:46
    #40069732
Focha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
парсить статичные страницы легко, изменения нужно делать минимум, если страница догружается после загрузки, нужно искать JSON, по сути разбирать сайт и смотреть GET / POST и перехватывать ответы

Делал на Python(Requests, re)
Можно посмотреть в сторону Scrapy for Python
...
Рейтинг: 0 / 0
12.06.2021, 10:33
    #40077334
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
Где-то в моих завалах валяется такой "универсальный" парсер, где настройка на парсинг сайта делается .. оператором, тыкая в нужные блоки на страничках сайта. По мере тыканья, ему показывается результат парсинга "что получится" и он может скорректировать регексп самостоятельно, даже не особо в нем разбираясь ибо есть "подсказки" как это поправить..
Результат сохраненной "инструкции" парсеру можно натравить на другую подобнуб страничку и убедиться что подводных камней нет .. или есть.
Парсер работает в фоновом режиме (писан на ПХП), умеет регулировать нагрузку на сайт, работать через проски и внешние анонимайзеры, для чего у него есть спец кнопка "поиск анонимайзера", которая по внутренней СУБД (пополняется кроном отдельным процессом) тестится запросом самому себе с оценкой времени прохождения запроса. Есть режим карусели, где случайное количество запросов к сайту разбрасывается через десяток наилучших внешних прокси случайным образом.
Результат парсится согласно инструкции в EAV СУБД на Мускуле, и потом его можно "просмотреть" и скорректировать, если что-то пошло не так.
Умеет парсить постраничный вывод через разбор пагинаторов.

Ничего особо сложного там не было, наращивался по мере развития задачи, примерно полгода. Сделан полностью на регексп подходе.

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

Устарел, т.к. сейчас проще запросить стороннее АПИ, чем изголяться и держать оператора. Да и .. обновление сайтов часто желает лучшего .. смысл качать то, что давно устарело? А устаревает оно примерно уже за неделю.

В общем .. в современных реалиях нафиг не нужно. Писалось в 2012-2014гг, где-то там и уже тогда становилось очевидным, что это бесполезная хотелка Заказчика..
...
Рейтинг: 0 / 0
14.06.2021, 18:12
    #40077526
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
парсить с помощь regex'а сайты, это такой себе способ, уже 1000 копий на этом поломаны, даже объяснять не хочу, почему. достаточно погуглить на этом форуме. не надо пытаться вырывать зубы через зад.
...
Рейтинг: 0 / 0
14.06.2021, 19:48
    #40077530
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
Dima T
Если ты не гугл и не яндекс, то тебя забанят на том сайте, в лучшем случае, в худшем - гавном накормят. Все уважающие себя сайты отслеживают таких парсеров.

Правильных путь: обратиться к владельцам сайта и спросить как по их мнению правильно брать у них инфу.

Обычно те кто парсят - следуют определённому кодексу поведения. Этический краулинг.
Например - не создают слишком много реквестов в секунду. Не создают много коннектов.
И не заходят в области скрытые в robots.txt. Короче не создают проблем для владельцев
и сисадминов. Пример такого этического кодекса я находил в проекте crawly

https://hexdocs.pm/crawly/ethical_aspects.html#content

Чисто ради прикола я парсил sql.ru, собирая сведенья о мемберах в рамках классификации векторов
https://www.sql.ru/forum/1326141-1/voskresnyy-som-i-klassifikaciya-vektorov но проект я забросил
т.к. интерес пропал и сведений я не собрал. В качестве библиотеки использовал https://jsoup.org/
...
Рейтинг: 0 / 0
15.06.2021, 02:36
    #40077551
Kusanagi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Универсальный парсер web сайтов
Eolt

3. Чтобы обучить парсер извлекать данные с нового сайта, нужно создать файл настроек для этого сайта, а не переписывать код парсера.

Вот это самый сложный момент парсинга. Какие данные - табличные (dataFrame)? - тогда как именовать поля создаваемых объектов?или это одиночный скаляр/строка, которую надо получить. Тогда что делать дальше?

Проще руками писать парсеры под конкретную область, зашить в БД их имена и динамически вызывать по имени.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Универсальный парсер web сайтов / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]