CheckParams - массовая проверка параметров доменов и ссылок

bolyk
На сайте с 16.02.2006
Offline
175
#121

Mlu, уважаемый, а можно как - то ваш софт зациклить, чтобы он результаты работы записывать в исходный файл? Нужен некий краулер. Суть очень проста - из исходного файла проходимся по ссылкам из которых парсим ссылки, и дописываем в конец исходного файла. Проблемы с доступом потоков к файлу не возникнет?

Thunder v3. Дорген (http://ifirestarter.ru/product/10) | MassSiteProxy. Скрипт клонирования сайтов (http://ifirestarter.ru/product/12) | CPAgen CPA дорген (http://ifirestarter.ru/product/14) | (http://fast-index.ru/article)
Subudayj
На сайте с 24.06.2008
Offline
67
#122
bolyk:
Mlu, уважаемый, а можно как - то ваш софт зациклить, чтобы он результаты работы записывать в исходный файл? Нужен некий краулер. Суть очень проста - из исходного файла проходимся по ссылкам из которых парсим ссылки, и дописываем в конец исходного файла. Проблемы с доступом потоков к файлу не возникнет?

Я хоть и не mlu, но попробую ответить:)

Данную вещь можно реализовать с помощью "кастомного" http-модуля, код которого нужно поместить в конфигурационный файл программы (checkparams.xml). В модуле указана JS-функция HTTP_OnAfterRequest, которая будет вызываться каждый раз после успешного скачивания страницы. В тексте функции идет поиск ссылок (приведен самый простой вариант поиска ссылок), и добавление каждой новой ссылки в очередь заданий с помощью встроенной в CheckParams функции AddUrl.

P.S. Это лишь самая простая вещь, которую можно сделать с помощью скриптов:)

<test module_name="custom_crawler" enabled="1" check_interval="0" retries="10" use_proxies="0" results_mode="2" download_size="999999" parse_url="1">
<script_engine enabled="1" name="custom" language="JScript"><![CDATA[ function HTTP_OnAfterRequest(request)
{
var pageHeader = request.AnswerHeaders;
var pageContent = request.AnswerData;

var reFindPages = /<a href="(.+?)">.+?<\/a>/igm;
var myArray;
while ((myArray = reFindPages.exec(pageContent)) != null)
{
AddToLog('Found new link ' + myArray[1]);
AddUrl(myArray[1]);
}
}
]]></script_engine>
<request onAfterRequest="custom:HTTP_OnAfterRequest">
<server address="%HOST%" port="%PORT%"/>
<headers><![CDATA[GET %OBJECT% HTTP/1.1
Host: %HOST%
User-Agent: #$m$UA$m$#
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Connection: close

]]></headers>
</request>
</test>

***91; нужно заменить на [, ***93; на ], парсер их "съел" :)

Quo vadis?
bolyk
На сайте с 16.02.2006
Offline
175
#123

Ваш код при дельно ясен. Спасибо, огромное. Не понял только момента с

***91; нужно заменить на [, ***93; на ], парсер их "съел"

Спасибо за наводочку.

Subudayj
На сайте с 24.06.2008
Offline
67
#124
bolyk:
Не понял только момента с

Ну парсер форума заменил символы [ и ] в приведенном коде на ***91; и ***93;

Когда будете копировать в конфиг, обратите на это внимание просто.

bolyk
На сайте с 16.02.2006
Offline
175
#125

Subudayj, не подскажите, где я ошибся - не компилирует:

function HTTP_OnAfterRequest(request)

{
var pageHeader = request.AnswerHeaders;
var pageContent = request.AnswerData;

var reFindPages = /<a href="(.+?)">.+?<\/a>/igm;
var myArray;
while ((myArray = reFindPages.exec(pageContent)) != null)
{
AddToLog('Found new link ' + myArray[]);
AddUrl(myArray[]);
};
return 1;
}

спасибо

M
На сайте с 09.02.2008
Offline
68
mlu
#126
bolyk:
Subudayj, не подскажите, где я ошибся - не компилирует:
спасибо

Попробую ответить за него :)

К сожалению, парсер форума покромсал скобки [], вот примерно так должно быть: http://pastebin.com/Vv9Tbrgh

bolyk
На сайте с 16.02.2006
Offline
175
#127

Спасибо большое. Нашел ошибку.

bolyk добавил 29.10.2011 в 09:11

отключаю все модули. Оставляю только краулер, и софт отвечает что ничего не включено:

2011-10-29 08:08:50.476;Starting CheckEngine HTTP Server

2011-10-29 08:08:50.454;All check params disabled, nothing to check.
2011-10-29 08:08:50.165;Loading settings.
2011-10-29 08:08:50.163;Installed script engines: "JScript", "XML", "VBScript", "VBScript.Encode", "JScript.Compact", "JScript", "JScript.Encode"
2011-10-29 08:08:38.505;Checking for internet connectivity...
Subudayj
На сайте с 24.06.2008
Offline
67
#128
bolyk:
Спасибо большое. Нашел ошибку.

bolyk добавил 29.10.2011 в 09:11
отключаю все модули. Оставляю только краулер, и софт отвечает что ничего не включено:
2011-10-29 08:08:50.476;Starting CheckEngine HTTP Server

2011-10-29 08:08:50.454;All check params disabled, nothing to check.
2011-10-29 08:08:50.165;Loading settings.
2011-10-29 08:08:50.163;Installed script engines: "JScript", "XML", "VBScript", "VBScript.Encode", "JScript.Compact", "JScript", "JScript.Encode"
2011-10-29 08:08:38.505;Checking for internet connectivity...

Конфиг полностью покажите, пожалуйста. Можно на том же pastebin.com выложить.

bolyk
На сайте с 16.02.2006
Offline
175
#129
Subudayj:
Конфиг полностью покажите, пожалуйста. Можно на том же pastebin.com выложить.

http://pastebin.com/RYvP0zbH

M
На сайте с 09.02.2008
Offline
68
mlu
#130

К сожалению, Вы нарушили правила создания новых модулей, поместив модуль не внутри тега <params>, где должны быть все модули.

Общая схема расположения модулей примерно такая:


<settings>
<check_engine>
<params>
<модуль1/>
<модуль2/>
<модуль3/>
</params>
</check_engine>
</settings>

Подробнее об этом написано тут начиная с 871 строки: http://checkparams.com/ru/config#line-871

Предлагаю перенести дискуссию по этой теме в форум программы, если вдруг еще возникнут вопросы, дабы не засорять топик кусками XML :)

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