MassArticleParser - массовый парсинг статей. Один парсер для всех сайтов.

JakoKruzo
На сайте с 04.06.2008
Offline
158
#41

1. Тег заменится ничем.

2. Всегда задействуются все потоки. Если все сайты спарсены, но остаются несколько долгоработающих потоков, то вы можете остановить их через "STOP ALL" или "ABORT".

3. Могу сделать. Вы так сайт указываете: sitename.ru*decor/*furniture/ ?

M
На сайте с 04.10.2013
Offline
82
#42
1. Тег заменится ничем.
2. Всегда задействуются все потоки. Если все сайты спарсены, но остаются несколько долгоработающих потоков, то вы можете остановить их через "STOP ALL" или "ABORT".
3. Могу сделать. Вы так сайт указываете: sitename.ru*decor/*furniture/ ?

1. Не понял о чем вы, еще раз спрашиваю, если мой шаблон

[ARTICLE_TITLE] – заголовок страницы.

[ARTICLE_H] – первый заголовок H.

[ARTICLE_BODY] – сама статья.

Бывает, что на сайте только TITLE, статья сохранится только с татйлом? Или пропустится до статьи где будут условия шаблона соблюдены (заголовок, H, сама статья)?

2. Извиняюсь, тупанул, с потоками нет проблем

3. Я паршу все с домена, т.е просто указываю домен

Здесь (https://imonetizeit.ru/site/referral?hash=e9c994975be66785c950cf8c64a2e4d0) дейтинг со смартлинком, все гео
C2
На сайте с 12.02.2015
Offline
117
#43

А мне интересно, потом это контент, что напарсили, автоматом заливать на WP Допустим можно?

Люди, научитесь уже проходить электронную регистрацию на рейс ( http://xn----7sbf0agloerfga7p.xn--p1ai/electronic-check-in-for-s7-flight/ ), хватит плодить очереди в аэропорту
JakoKruzo
На сайте с 04.06.2008
Offline
158
#44
Бывает, что на сайте только TITLE, статья сохранится только с татйлом? Или пропустится до статьи где будут условия шаблона соблюдены (заголовок, H, сама статья)?

Если текста статьи нет, то ничего в файл не сохранится. Но я могу сделать, чтобы сохранялись все.

Я паршу все с домена, т.е просто указываю домен

В таком случае раскладывать статьи по тематике не получится.

А мне интересно, потом это контент, что напарсили, автоматом заливать на WP Допустим можно?

Для этого есть специальные программы, например Зеброид, Цербер.

M
На сайте с 04.10.2013
Offline
82
#45

Можно ли считать версию 2.0.6 финальным релизом?

L
На сайте с 21.01.2013
Offline
52
#46

а парсить тексты по списку страниц будет возможнность?

JakoKruzo
На сайте с 04.06.2008
Offline
158
#47
Можно ли считать версию 2.0.6 финальным релизом?

2.0.6 актуальная версия. Будут обновления, пишите пожелания.

а парсить тексты по списку страниц будет возможнность?

Да, завтра сделаю обновление.

Ещё сделаю, чтобы программа заходила в robots.txt и не парсила страницы, которые закрыты от индексации, чтобы меньше мусора было. Кто-то просил уже давно об этом.

JakoKruzo
На сайте с 04.06.2008
Offline
158
#48

Сделал обновление 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

JakoKruzo
На сайте с 04.06.2008
Offline
158
#49

Сделал обновление 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, если нет.

Функция on_Error выполняется при возникновении ошибки в работе скрипта.

Готовые переменные:

$app_path - путь к парсеру

Чтобы включить скриптинг, нужно в settings.txt установить: *scripting=1

Список всех функций - http://jako.tech/docs/MassArticleParser-Script-Functions.txt

Замените старый файл MassArticleParser.exe новым и скопируйте два новых файла: thread_events.txt и events.txt.

Есть вопросы по скриптингу? Пишите мне на JakoKruzo@mail.ru.

Ещё буду подробнее писать про скрипт.

JakoKruzo
На сайте с 04.06.2008
Offline
158
#50

Одной из частой задач является парсинг тегов всех изображений с сайта.

Для этого в настройках есть возможность задать такой режим: *mode=images{<img src="[SRC]" alt="[ALT]">} , где <img src="[SRC]" alt="[ALT]"> - вид , в котором сохранять теги. Чтобы сохранять теги в том виде, в котором они есть на сайте нужно указать просто: *mode=images

Но что делать, если парсер не находит статей? Например, статьи состоят из одних картинок.

Тогда теги изображений можно спарсить скриптом из всего html-кода страницы.

Для этого вставим в конец файла thread_events.txt эту функцию:

function GetAllImages(s){
r='';
i=stripos(s,'<img');
while(i>0){
i2=strpos(s,'>',i);
if(i2==0){break;}
t=substr(s,i,(i2+1)-i);
r=r+t+"\r\n";
i=stripos(s,'<img',i+1);
}
return(r);
}

А после строки function on_Save(){ впишем это: $output=GetAllImages($page_data);

Таким образом картинки будут доставаться из переменной $page_data, которая содержит весь html-код страницы.

В настройках надо указать: *allowemptyarticles=1 - это разрешит обрабатывать скрипту все страницы, в независимости от того, есть на них статьи или нет.

Так будут сохраняться абсолютно все картинки, которые есть на странице. Чтобы брались только нужные картинки, надо изменить функцию GetAllImages(), например, указав часть урла картинок, которые нужно оставить:

function GetAllImages(s){
r='';
i=stripos(s,'<img');
while(i>0){
i2=strpos(s,'>',i);
if(i2==0){break;}
t=substr(s,i,(i2+1)-i);
if(strpos(t,'/fullsizeimages/')>0){r=r+t+"\r\n";}
i=stripos(s,'<img',i+1);
}
return(r);
}

Скрипт очень простой и, надеюсь, понятен большинству. Но если что-то непонятно, пишите мне на JakoKruzo@mail.ru или спрашивайте здесь.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий