Сделал обновление 2.0.8.
1. Исправил ошибку с режимом images (макросы не всегда правильно заменялись): *mode=images{<img src="[SRC]" alt="[ALT]">}
2. Встроил в программу свой интерпретатор скрипта из JakoDorgen-а. Это даёт возможность обработки статей перед сохранением. Можно, например, удалять какой-то мусор, вставлять в статью свои ссылки, добавлять кеи и т.д.
Скрипт, который исполняется для каждого потока парсинга в файле thread_events.txt. Общий скрипт в файле events.txt.
thread_events.txt
Перед тем, как сохранить статью, программа выполняет функцию on_Save. Сама статья находится в переменной $output. Так, например, можно перевести весть текст в верхний регистр:
function on_Save(){ $output=strtoupper($output); }
Функция on_Start выполняется перед началом парсинга сайта.
Функция on_Complete выполняется по завершению парсинга сайта (error=0, если ошибок нет, и error=1, если есть, или в случае остановки парсинга пользователем).
Функция on_Error выполняется при возникновении ошибки в работе скрипта.
Готовые переменные:
$app_path - путь к парсеру
$article_dir - папка, в которую сохраняются статьи
$image_dir - папка, в которую сохраняются файлы изображений
$site_url - урл сайта, который парсится
$page_number - номер страницы, которая парсится
$page_count - кол-во найденных страниц сайта (меняется при нахождении новых)
$page_url - урл страницы, которая парсится
$page_data - html-код страницы, которая парсится
$site_number - номер сайта, который парсится
$thread_number - номер потока в котором сайт парсится
Есть две специальные функции:
1. stopthread(error); - останавливает парсинг. stopthread(1); - остановка с ошибкой (статус парсинга будет Error), stopthread(0); - остановка без ошибки (как будто парсинг завершился успешно сам).
2. reparsepage(); - указывает, что страницу нужно спарсить ещё раз. Т.е. дальше будет парситься не следующая страница, а эта же.
events.txt
При запуске программы выполняется функция on_Programm_Start.
При нажатии кнопки "START" выполняется функция on_Parsing_Start.
При остановке парсинга кнопкой "STOP ALL" выполняется функция on_Parsing_Stop.
При завершении парсинга всех сайтов выполняется функция on_Parsing_Complete. paused=1, если была нажата "PAUSE", и paused=0, если нет.
Чтобы включить скриптинг, нужно в settings.txt установить: *scripting=1
Список всех функций - http://jako.tech/docs/MassArticleParser-Script-Functions.txt
Замените старый файл MassArticleParser.exe новым и скопируйте два новых файла: thread_events.txt и events.txt.
Есть вопросы по скриптингу? Пишите мне на JakoKruzo@mail.ru.
Ещё буду подробнее писать про скрипт.
Сделал обновление 2.0.7.
Новое в настройках:
*parsemainpage=0 - сохранять ли контент с главной (входной) страницы
*donotsaveurls=0 - не сохранять url-ы
*savetoonefile=0 - сохранять все статьи в один файл
*allowemptyarticles=0 - сохранять статьи с околонулевой длиной
*checkrobotsfile=0 - не парсить страницы, которые закрыты от индексации в robots.txt
1 - да (вкл), 0 - нет (выкл).
1. Сделал возможность парсить статьи по списку страниц. В settings.txt указать:
*pagenestinglimit=0*parsemainpage=1*donotsaveurls=1
pagenestinglimit задаётся равным 0, чтобы парсилась только входная (первая) страница.
parsemainpage включает сохранение контента с входной страницы.
donotsaveurls отключает сохранение урлов в папку urls. В таком режиме они не нужны.
В sites.txt просто указываем список урлов.
2. Чтобы программа проверяла robots.txt и не парсила страницы, которые закрыты от индексации, нужно указать *checkrobotsfile=1
3. Чтобы отключить сохранение урлов: *donotsaveurls=1
4. Сохранение всех статей в один файл: *savetoonefile=1
5. Сохранение статьи даже при нулевой длине: *allowemptyarticles=1
Это нужно, например, если вы хотите спарсить только заголовки страниц, но самих статей на странице программа не находит (если сайт не статейник, а, например, интернет-магазин). Раньше программа не сохраняла файлы, если длина статьи была меньше 70 символов.
6. Запуск с командной строки: передайте программе через точку с запятой параметры: Threads(кол-во потоков);Link limit(ограничение обхода ссылок);Do not update thread list(не обновлять список потоков)
Пример: 5;999999;0
7. Исправлена ошибка со слешами в урле при сохранении вне папок.
Скачивать обновление по ссылке, которую я давал при покупке. Замените старый файл MassArticleParser.exe новым и добавьте в settings.txt новые настройки (необязательно):
*parsemainpage=0
*donotsaveurls=0
*savetoonefile=0
*allowemptyarticles=0
*checkrobotsfile=0
2.0.6 актуальная версия. Будут обновления, пишите пожелания.
Да, завтра сделаю обновление.
Ещё сделаю, чтобы программа заходила в robots.txt и не парсила страницы, которые закрыты от индексации, чтобы меньше мусора было. Кто-то просил уже давно об этом.
Если текста статьи нет, то ничего в файл не сохранится. Но я могу сделать, чтобы сохранялись все.
В таком случае раскладывать статьи по тематике не получится.
Для этого есть специальные программы, например Зеброид, Цербер.
1. Тег заменится ничем.
2. Всегда задействуются все потоки. Если все сайты спарсены, но остаются несколько долгоработающих потоков, то вы можете остановить их через "STOP ALL" или "ABORT".
3. Могу сделать. Вы так сайт указываете: sitename.ru*decor/*furniture/ ?
Нет, я не использовал каких-либо сторонних разработок.
Инструкции:
http://jako.tech/docs/MassArticleParser.rtf
http://jako.tech/docs/MassArticleParser-ENG.rtf
Как спарсить сайты из веб-архива по списку.
Укажите сайты так:
http://web.archive.org/web/20300920134653/site1.com/ http://web.archive.org/web/20300920134653/site2.com/ http://web.archive.org/web/20300920134653/site3.com/
...
Дата в урле не имеет значения. Например, я указываю 2030 год: 20300920134653. Веб-архив автоматически перенаправляет на существующие даты.
Сделал обновление 2.0.6.
Добавил возможность загрузки файлов изображений с заменой урлов в тегах. Для этого в settings.txt укажите:
*downloadimages=all{images,100,100}
В фигурных скобках указывается имя папки, в которую сохранять изображения, минимальная ширина и высота. Если изображение не скачалось, либо ширина или длина меньше минимального значения, то тег этого изображения удаляется из статьи.
Чтобы загружались только изображения находящиеся на том же домене, что и сайт (не хотлинкинг), надо указать так:
*downloadimages=host{images,100,100}
Чтобы у картинок в src путь начинался со слеша, указываем так:
*downloadimages=all{/images,100,100}
Добавил возможность сохранения логов обхода сайта:
*logs=1
Если вдруг какой-то сайт не парсится, можно посмотреть какие данные присылает сервер.
Сделал обновление 2.0.5.
В дополнение к {NOT_ROOT} сделал возможность указывать корневую папку: {ROOT:/}. Например, входная страница https://www.site.ru/blog/articles/index.php , а нужно, чтобы парсились статьи не только из /blog/articles/, а со всей папки /blog/. Тогда указывать сайт надо так: https://www.site.ru/blog/articles/index.php{ROOT:/blog/}
Внёс изменения позволяющие парсить web.archive.org.
Сайт указывать так: http://web.archive.org/web/20171004194426/https://www.site.ru/
Веб-архив подставляет ко всем урлам на сайте свой урл: http://web.archive.org/web/20171004194426/https://www.site.ru/page.html
Чтобы урл веб-архива удалялся, надо в settings.txt указать *urlinurl=1
Так от вышеуказанного урла останется только https://www.site.ru/page.html
Это работает не только с урлами веб-архива, но и со всеми урлами вида: http://site1.ru/folder/http://site2.ru.