(осторожно многотекста) Столкнулся с простой казалось бы задачей: А) Есть ХХХ ключей Б) По каждому ключу парсится текст с опред кол-вом символов Ну и как бы в задаче получается основным моментом нужно так, чтобы результат выводился в виде: кейворд текст статьи разделитель Как пример, мы тянем тексты для магнитол есть модель Sony cdx-gt317ee хотелось бы, чтобы на выходе был ключевик и через \n статьи конкретно под эту магнитолу sony cdx-gt317ee статьи для этой магнитолы sony cdx-gt317ee текст текст текст === (разделитель) sony cdx-gt828u статьи для sony cdx-gt828u === (разделитель) и т.п. Что успешно делал раньше: - вытягивал ссылки по списку ключей - вытягивал контент с сайтов - регулярка по очистке текста была TextBlock (\b[A-ZА-Я](?:\w+[,;:]? ){3,}\w{2,}[.!?]) Но задача оказалась такой, чтобы контент вытягивало не в ссылки, а потом уже парсинг А чтобы под каждый ключ был конкретный контент с 10 собранных ссылок, например. =====1===== Начну с конца Заметил, что эта регулярка (если попадаются другие языки со словами вида C'onte) - режет первые 2 символа. Кроме того, TextExtractor тянул всё подряд (по ограничению блока), но залетали и футер и меню и прочее, если там был проходивший по правилу контент. Поискал еще другие советы на форумах и наткнулся на Подскажите парсер текста Там @Forbidden предложил (на просьбу про длину предложения именно, а не длину блока) фильтр такого вида [,\w\d]{50,}[!?.] Я затестил на той же странице https://a-parser.com/threads/1573/ при [,\w\d]{8,}[!?.] Сообщение #3 следующего содержания не парсит вообще: "Спасибо большое! а подскажите пожалуйста, можно ли как то, сделать чтоб текст парсился не весь подряд, а чтобы каждое предложение в тексте было от 50 символов, именно предложение, а не блог текста? а то если ставить блог текста, то он и категории меню парсит с сайтов, а это получается мусор((" при [,\w\d]{14,}[!?.] нет результатов никаких вообще с этой страницы Почему? =====2===== Задача не только парсить линки, а потом контент, а именно спарсить выдачу по ключу, записать ключ, записать контент кот. прошел по параметрам, дальше разделитель между статьями и следующий ключ, следующий контент и разделитель и так по циклу. Начал копать на форуме, есть JS https://a-parser.com/resources/20/ Но я так понимаю, что регулярку, о кот. написано в п.1 я там применить не смогу? Т.е. текст залетит как есть, без ограничений с кучей мусора =====3===== Каким образом можно научить a-parser игнорировать футер, сайдбары и прочее? Инструмент мегамощный и я всегда его хвалю и рекомендую всем кого знаю, но с текстами беда прям. Альтернативные копеечные скрипты делают это на ура, парсят выдачу по ключу, результаты предоставляют в любом виде, причем понимают где футер и не тянут оттуда контент. Т.к. даже если мы ограничим не только по chars, но и по длине предложения (как в п.1), то всё равно много у кого футеры с dmca дисклеймерами, разными описаниями и другим бредом. Отследить нереально =====4===== Открыт вопрос также по исключению ресурсов с кот. контент не тянуть (напр: википедия) Я понимаю, что это можно сделать регуляркой, но если например списком 20-30 ресурсов... ? Хотелось бы это всё сделать в a-parsere, не прибегая к сторонним софтам. Но по тексту как-то неопределенно всё Там где делается это за 3 минуты, в апарсере пол дня пришлось просидеть и результат... его почти нет.. Спасибо.
Задачу в "идеальном" варианте не решить. Предлагаю разбить большую задачу на мелкие: 1) парсинг SE по киворду, сохранение ссылок, для упрощения в будущем сохраняй в формате, который бы помещался в одну строку без разделителя, к примеру - json. 100% будут варианты, когда выбранный разделитель будет в данных и "все поломается". 2) обработчик ( скрипт) данных, который фильтрует результаты пункта 1) 3) парсер текста с сайтов ( пусть будет сырого, так тоже проще для отладки) 4) обработчик (скрипт) сырого текста Отследить реально, если делать sent tokenize (http://www.nltk.org/_modules/nltk/tokenize.html) и строить статистику в разрезе домена донора текста, то такие предложения будут встречаться мега часто. Задача сложная, но реализуемая, в том числе и с высоким "качеством" на выходе. Другое дело в трудоемкости. После этапа разработки и отладки все можно сделать на автомате через API парсера. В описании задачи не сказано, зачем все это нужно. Позволю себе пофантазировать, что для последующей генерации дорвеев. Если так, то существует вариант грубо спарсить текст, подсунуть его sphinxsearch, а дергать данные с помощью http://sphinxsearch.com/docs/current/sphinxql-call-snippets.html.
Раскопал в своих архивах еще несколько ссылок по теме https://mercury.postlight.com/web-parser/ https://github.com/mozilla/readability https://googleweblight.com/i?u=http.../8273952/how-does-safaris-reader-feature-work
Здравствуйте. Решить вашу задачу можно следующим образом: 1) Делаем пресет c парсером SE::Google или SE::Yandex. Выставляем значение Page count 1, а Links per page 10. Только топ 10 ссылок. 2) Делаем пресет на основе парсера HTML::TextExtractor который будет собирать контент по заданным ссылкам. 3)Запустить второе задание по завершению первого с использованием файла результата первого задания в качестве запросов. Для этого в 1 - ом пресете Нажмите Больше опций. Далее в выпадающем списке Запустить по завершению выберите второе задание и кликните на использовать файл результатов в качестве запросов.
Для очистки текста вы можете использовать конструктор результатов . Более подробно о нем вы можете почитать по ссылке Если приведёте пример страницы, то я покажу как её очистить.А лучше несколько ссылок на страницы, чтобы решение было более универсальным.
а как в этом случае реализовать вывод ? кейворд текст статьи разделитель ведь пресет с HTML::TextExtractor будет уже выполняться уже после того, как закончиться 1е задание? или ошибаюсь и первое задание берет 1й ключевик, парсит ссылки и сразу переходит к пресету2 потом ключевик2 ->пресет1->пресет2
Нет. Вы не ошибаетесь. Первое задание берет 1й ключевик, парсит ссылки и сразу переходит к пресету2. Обойти этот момент можно следующим образом. Добавлять в 1 -ом пресете к ссылке через какой нибудь разделительный знак ( например кейворд. Например http://site.com;keyword Во втором пресете через конструктор запросов разбираем запрос на собственно ссылку, по которой будет делаться запрос и keyword. Более подробно о конструкторе запросов вы можете прочитать по этой ссылке