1 место Универсальный экстрактор™ контента (основной статьи страницы)

1. Сначала заново распаковал твой архив и заново скомпиллировал .exe. Попробовал прогнать через readability_example.xmlz, он выдал ошибку, как у коллеги выше:

52465


2. Скопировал содержимое обоих проектов в одноименные файлы и сохранил из своей версии зенно - тот же результат, как у меня выше.

3. Прогнал батник, который странным образом (?) пропарсил мой урл, который я пытался спрятать в скриншоте выше :-) Глюк, или ты его вписал?

Получилось, кажется, что успех рядом:

52466
 
:-) Глюк, или ты его вписал?
Я его вписал :-)

Получилось, кажется, что успех рядом:
Собсно, этот скрин обозначает что парсер работает.

------------------------------------------------

Минутка озарения: до меня сейчас дошло, что в старых версиях ZP нет функционала возврата stdout из кубика запуска программы :-) Именно поэтому у тебя там пустота в нужной переменной и якобы ничего не парсит.

Есть 3 вида решения этой проблемы:
  1. Обновить ZP :-)
  2. Убрать кубик проверки stdout (там где проверяется что результат "SuccessReadability"), добавить кубик проверки что файл из переменной url_filepath существует и ещё проверять, что он не пустой. Можно сделать следующим кодом (накидал на коленке, поставить за место кубика проверки stdout - красная линия должна быть как у него же):
    C#:
    Развернуть Свернуть Копировать
    string path = project.Variables["url_filepath"].Value;
    if (File.Exists(path)) {
        string content = File.ReadAllText(path);
    
        if (String.IsNullOrEmpty(content)) {
            throw new Exception("file empty");
        }
    } else {
        throw new Exception("file not found");
    }
  3. Допилить readability_cli.go , чтоб он в случае ошибки выплёвывал ненулевой exit code, но мне сейчас лень этим заниматься))
 
Последнее редактирование:
Вот где собака порылась )) Если у меня одного так, то займусь завтра обновлением зп :) Отпишу, как у меня пройдет с результатами, а то устал уже с парсерами save-for-later всяких возиться, которые свои тэги везде прописывают и ругаются, когда "промышленные объемы запросов" на них шлются :))
 
Если у меня одного так, то займусь завтра обновлением зп
Ну судя по топку - такое только у тебя и предыдущего камрада со старой версией ZP возникло) Именно поэтому и "Debug thread error" скорее всего валилось.

Для начала попробуй второй вариант и отпишись как качество у этого парсера )
 
Доброе утро ;)

Попробовал пункт 2, вышло так:

52488
 
Тоже видел эту ошибку в логе. Но файлы в cache таки создаются, просто потом сразу удаляются в случае неудачной проверки stdout на "SuccessReadability".

Плотно в проблеме ещё не копался (да я и не кодер совсем), поэтому пока тупо перекинул красную ветку от этого кубика к зелёной. :D

В итоге вроде нормально парсит, но на больших объёмах ещё не проверял, может где-то и косячит.

P.S. Хотя, конечно, тоже буду рад, если получится привести всё к работе без костылей. :-)
 
Попробовал пункт 2, вышло так:
Дичь какая-то. Попробовал тот же url - у меня всё ок :)
Покажи скрин кубика "Run program", может там аргументы даже не передаются в старой версии %)

Ну и руками проверь есть ли файл по пути из переменной url_filepath

Плотно в проблеме ещё не копался (да я и не кодер совсем), поэтому пока тупо перекинул красную ветку от этого кубика к зелёной. :D
Ну вообще, да. На крайний случай можно не проверять что запуск программы (Run program) выдаст в ответ SuccessReadability, а просто с кубика запуска программы перекинуть всё на следующий блок:
52504


В случае если парсер ничего не спарсит, то оно само по BadEnd подчистит всё.

Тоже вполне рабочий вариант получается :)
 
Скрин кубика:

52505


А файлы (если мы про временные в папке - cache), как вчера не создавались, так и сегодня. Папки только создаются с названиями доменов, и не удаляются потом.

Может, если с 6-го марта, какие-то изменения были в проекте, скинешь тут новые?
 
Не! Надо было скрин предыдущего кубика, там где запуск программы ))

А файлы (если мы про временные в папке - cache), как вчера не создавались, так и сегодня
Да ну как так то!

Папки только создаются с названиями доменов, и не удаляются потом.
Это нормально

Может, если с 6-го марта, какие-то изменения были в проекте, скинешь тут новые?
Я ничего не менял )
 
52506


Предыдущий кубик :)
 
На крайний случай можно не проверять что запуск программы (Run program) выдаст в ответ SuccessReadability, а просто с кубика запуска программы перекинуть всё на следующий блок

Это тоже попробовал - везде битые результаты лезут. Жду, пока пейпал обменяется...
 
Предыдущий кубик :-)
У меня тогда кончились идеи почему такая фигня может быть.

Парсер 100% работает нормально, мы это проверили через запуск bat файла что я скидывал. Проблема скорее всего где-то в различиях на новой и старой зенке.

Проще всего уже походу тогда обновить зенку будет. К слову, если собираешься её обновлять только из-за этого парсера, то вначале можешь демку 7ки поставить и на ней погонять шаблон (исходный! а НЕ тот что мы сейчас наредактировали совместно!), чтоб понять подходит тебе это решение или нет.
 
Убрать кубик проверки stdout (там где проверяется что результат "SuccessReadability"), добавить кубик проверки что файл из переменной url_filepath существует и ещё проверять, что он не пустой. Можно сделать следующим кодом (накидал на коленке, поставить за место кубика проверки stdout - красная линия должна быть как у него же):
C#:
Развернуть Свернуть Копировать
string path = project.Variables["url_filepath"].Value;
if (File.Exists(path)) {
string content = File.ReadAllText(path);

if (String.IsNullOrEmpty(content)) {
throw new Exception("file empty");
}
} else {
throw new Exception("file not found");
}


Для справки: проверил сейчас этот пункт - у меня такой вариант кода вроде отрабатывает нормально и выходит по зелёной ветке дальше. Так что как минимум два решения проблемы для себя нашёл. Ещё раз спасибо за шаблон.
 
  • Спасибо
Реакции: Lord_Alfred
А файлы (если мы про временные в папке - cache), как вчера не создавались, так и сегодня. Папки только создаются с названиями доменов, и не удаляются потом.
UjukNLy.png

Убери все пробелы из пути к папке проекта или только к папке кэш путь сделай покороче :), я тестировал со всей папкой.
readability.xmlz можно не переносить в новый проект, только кубик "run programm" сразу пустить по зеленой ветке, как писали выше, ну или "{-Variable.cmd_stdout-}" == "0"(только не забудь поставить галку на "Записать exit code". Если проект отдельно не запускать, то "debug thread error" не вываливается.

Запускал в ПМ 5.21.1.0, все прекрасно работает, с выше перечисленными исправлениями.
 
  • Спасибо
Реакции: jcknick и Lord_Alfred
Убери все пробелы из пути к папке проекта
И вправду ведь!
100% в этом и была проблема, потому что я не использовал кавычки при передаче аргументов в Run program.
Для меня как-то привычно и логично, что нужно заменять все пробелы в винде на подчёркивание, на автомате это делаю и даже не думаю :-)
 
  • Спасибо
Реакции: jcknick и slcor
Елки-палки, моталки! Только прогуляться вышел, теперь буду вприпрыжку гулять, чтобы это протестить побыстрее!
 
  • Спасибо
Реакции: Koqpe
UjukNLy.png

Убери все пробелы из пути к папке проекта или только к папке кэш путь сделай покороче :-), я тестировал со всей папкой.
readability.xmlz можно не переносить в новый проект, только кубик "run programm" сразу пустить по зеленой ветке, как писали выше, ну или "{-Variable.cmd_stdout-}" == "0"(только не забудь поставить галку на "Записать exit code". Если проект отдельно не запускать, то "debug thread error" не вываливается.

Запускал в ПМ 5.21.1.0, все прекрасно работает, с выше перечисленными исправлениями.
да, тоже хотел написать, на прошлых страницах же писал об этом, сам мучался недавно... ))
 
Lord_Alfred спасибо тебе за шаблон, подскажи, пожалуйста:
1. Если у меня есть архив сайта, можно ли из него выгрузить все статьи?
2. Сохраняет ли парсер изображения к статьям?
 
1. Если у меня есть архив сайта, можно ли из него выгрузить все статьи?
Да, можно, посмотри как в шаблоне это реализовано и натрави на свой архив. Но стоит учесть (что вроде логично), что иногда парсер может ошибаться и нет никакой гарантии, что он всё вытащит корректно.

2. Сохраняет ли парсер изображения к статьям?
В текущем виде - нет. Про парсинг изображений мы обсуждали на первых страницах, нужно или руками парсить "<img src=..." или менять парсер, чтоб он вытаскивал не текстовое представление, а html-код статьи.
 
Отпишись обязательно как потестишь

Все супер! Тянет все в текстовые файлы, как надо. Только странно как-то - одним массивом текст, не разбивается на параграфы, как в некоторых ссылках в демо списке.

Теперь более прикладной вопрос, как тянуть только <p> тэги и все <h1><h2> и тп? :)
 
Подскажите куда копать?
Может у кого тоже такое?
 

Вложения

  • Screenshot_1.jpg
    Screenshot_1.jpg
    63,4 KB · Просмотры: 380
Теперь более прикладной вопрос, как тянуть только <p> тэги и все <h1><h2> и тп? :-)

Попробовал прописать article.Content, как обсуждалось выше в теме, перекомпиллировал приложение - все равно чисто текст одним массивом.

52580
 
Только странно как-то - одним массивом текст, не разбивается на параграфы, как в некоторых ссылках в демо списке.
Вроде уже обсуждали, что это из-за очистки контента в fix content кубике. Там \n\r заменяются.

Теперь более прикладной вопрос, как тянуть только <p> тэги
Через article.Content

А это уже в идеале надо через другой мой конвейер: https://zennolab.com/discussion/thr...chevikov-zagolovkov-statej-ot-gribnika.46636/

Подскажите куда копать?
Может у кого тоже такое?
У тебя и @russya такая же ошибка. Фиг знает почему, подозреваю что .net старый какой-то стоит.

Вот решение "в лоб": открой кубик "cached url path", найди там:
C#:
Развернуть Свернуть Копировать
// массив с недопустимыми символами в имени файла (также есть метод`Path.GetInvalidPathChars()` - для директорий)
IEnumerable<char> invalidFileChars = Path.GetInvalidFileNameChars();
// в кубике "Файлы для загрузки" через запятую сделана загрузка нескольких файлов, поэтому стоит заменять этот символ тоже
invalidFileChars = invalidFileChars.Append(',');

И замени на:
C#:
Развернуть Свернуть Копировать
// массив с недопустимыми символами в имени файла (также есть метод`Path.GetInvalidPathChars()` - для директорий)
List<char> invalidFileChars = Path.GetInvalidFileNameChars().ToList();
// в кубике "Файлы для загрузки" через запятую сделана загрузка нескольких файлов, поэтому стоит заменять этот символ тоже
invalidFileChars.Add(',');

Всё должно тогда заработать и не будет ошибки "Не содержит определения для Append".
 
Попробовал прописать article.Content, как обсуждалось выше в теме, перекомпиллировал приложение - все равно чисто текст одним массивом.
я ж выше написал:
Вроде уже обсуждали, что это из-за очистки контента в fix content кубике. Там \n\r заменяются.
 
я ж выше написал:

article.Content // контент с html-тегами

Я про то, что ни одного html-тега нет. Или я что-то не понимаю?

Получается что результат тот же, что и article.TextContent // текстовый контент без тегов
 
Я про то, что ни одного html-тега нет. Или я что-то не понимаю?
Должны быть теги :) Попробуй удалить скомпилированный exe и перекомпилировать заново.
Ну и кубик fix content временно отключи.
 
  • Спасибо
Реакции: jcknick
Должны быть теги :-) Попробуй удалить скомпилированный exe и перекомпилировать заново.
Ну и кубик fix content временно отключи.

Заработало наконец-то. Теперь надо к нему чистку тегов привязать и вообще гут. Заметил, правда, что он некоторые тексты все-таки режет, но что уж тут, либо скорость, либо качество :-)

А как, ты говорил, он обновляться будет? За счет какой-то внешней библиотеки?

Update:

400 текстов за 20 минут - найз :D
 
Последнее редактирование:

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)