Описание: | Реализация RobotsTxt |
Тип значения: | Строка |
Диапазон значений: | Одно из множества {OnlyDisallowRobotsTxt, DummyRobotsTxt} |
Требуется: | Всегда |
Пример: | "DummyRobotsTxt" |
RoutineThread
Описание: | Реализация RoutineThread |
Тип значения: | Строка |
Диапазон значений: | RT0 |
Требуется: | Всегда |
Пример: | "RT0" |
RoutineThreadSleepTime
Описание: | Время сна для реализации RoutineThread в случае отсутствия работы в миллисекундах |
Тип значения: | Целое число |
Диапазон значений: | [0, 2147483647] |
Требуется: | Всегда |
Пример: | 1000 |
SaveDuplicates
Описание: | Хранить ли PageData, страницы соответствующие которым являются дублем страниц, встреченных ранее |
Тип значения: | Логическое |
Диапазон значений: | {0,1} или {false, true} |
Требуется: | Всегда |
Пример: | true |
Комментарий | Истинное значение увеличивает количество потребляемой оперативной памяти, но исключает повторное скачивание страниц-дублей |
StopFile
Описание: | Путь к файлу, появление которого останавливает приложение (работает только, если в ApplicationsFinishers указан StopFileAF) |
Тип значения: | Строка |
Диапазон значений: | Любой валидный относительный или абсолютный путь к файлу в системе. Папки, входящий в путь, не создаются автоматически. |
Требуется: | Если в ApplicationsFinishers указан StopFileAF |
Пример: | "Stop. txt" |
TimeoutSeconds
Описание: | Таймаут в секундах по которому приложение заканчивает работу (работает только, если в ApplicationsFinishers указан TimeoutAF) |
Тип значения: | Целое число |
Диапазон значений: | [0, 2147483647] |
Требуется: | Если в ApplicationsFinishers указан TimeoutAF |
Пример: | 34000 |
Такие параметры как DownloadingThreadPDChunkSizeMultiplier ParsingThreadPDChunkSize, ParsingThreadSleepTime, RoutineThreadTime созданы чтобы помочь сделать работу максимально эффективной. Это связано с блокировкой ресурсов в хранилищах DataManager.
Приложение 5. Описание файла hosts. txt.
Данный файл должен представлять из себя набор строк следующего формата:
[#]{Протокол}://{Имя хоста};{Максимальное количество одновременных соединений};{Максимальный уровень};{Задержка краулинга}
Если строка начинается с #, то она игнорируется.
Протокол - значений из множества {http, https}.
Максимальное количество одновременных соединений - целое число в диапазоне [1, 2147483647]. Не рекомендуется выбирать большое число, зависит от производительности сайта. Минимальным рекомендуется выбирать 2, так как некоторые страницы могут отдаваться сервером довольно медленно, и тем временем, можно получить на параллельном соединении несколько других страниц.
Максимальный уровень - максимальный уровень сканирования включительно. В данном случае под уровнем понимается уровень страниц - минимальное количество переходов по гиперссылкам с главной страницы на текущую. Диапазон значений: [-2147483648, 2147483647]. Если задано отрицательное значение, то уровень не ограничен.
Задержка краулинга - время в миллисекундах, ожидаемое перед тем, как начать скачивание страницы. Данное время применяется для каждого соединения и не делится на их количество. Следует отметить, что даже в случае необходимости задержки краулинга максимальное количество соединений разумнее выбирать равное двум и просто увеличивать задержку для одного соединения в 2 раза.
Пример строки файла hosts. txt:
http://www. apmath. spbu. ru;4;-1;0
Приложение 6. Фрагменты исходного текста программы RCCrawler.
Полная версия исходного текста программы RCCrawler размещена по адресу http://www. apmath. spbu. ru/ru/staff/pechnikov_aa/files/programmnyy_kod_RCCrawler. docx.
RCCrawler. pro
QT += core network sql
QT -= gui
CONFIG += c++11
TARGET = RCCrawler
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
PRECOMPILED_HEADER = precompiled_headers. h
SOURCES += main. cpp \
objectcreator. cpp \
application_managers/applicationmanager. cpp \
application_finishers/applicationfinisher. cpp \
data_managers/datamanager. cpp \
data_structures/hostdata. cpp \
data_structures/pagearc. cpp \
threads/downloadingthread. cpp \
threads/parsingthread. cpp \
threads/rccbasethread. cpp \
data_managers/bmicdm. cpp \
data_structures/pagedata. cpp \
application_finishers/workisdoneaf. cpp \
application_managers/textfileam. cpp \
result_unloaders/resultunloader. cpp \
result_unloaders/gephisitegraphru. cpp \
threads/dt0.cpp \
threads/pt0.cpp \
result_unloaders/testru. cpp \
qreplytimeout. cpp \
rccsettings. cpp \
data_structures/pdlogitem. cpp \
robots_txt/robotstxt. cpp \
data_structures/robotstxtrule. cpp \
robots_txt/onlydisallowrobotstxt. cpp \
helpercreator. cpp \
application_finishers/timeoutaf. cpp \
robots_txt/dummyrobotstxt. cpp \
delayedpdpass. cpp \
data_structures/hostdownloaddata. cpp \
application_finishers/stopfileaf. cpp \
threads/routinethread. cpp \
threads/rt0.cpp \
data_structures/pdandpacreatedata. cpp \
rccapplication. cpp
HEADERS += \
includes. h \
objectcreator. h \
application_managers/applicationmanager. h \
application_finishers/applicationfinisher. h \
objects. h \
rccconsts. h \
data_managers/datamanager. h \
data_structures/hostdata. h \
data_structures/pagearc. h \
data_structures/pagedata. h \
threads/downloadingthread. h \
threads/parsingthread. h \
threads/rccbasethread. h \
data_structures/pdstore. h \
data_managers/bmicdm. h \
baseobjects. h \
data_structures/pastore. h \
application_finishers/workisdoneaf. h \
application_managers/textfileam. h \
result_unloaders/resultunloader. h \
result_unloaders/gephisitegraphru. h \
threads/dt0.h \
threads/pt0.h \
result_unloaders/testru. h \
qreplytimeout. h \
rccsettings. h \
data_structures/pdlogitem. h \
robots_txt/robotstxt. h \
data_structures/robotstxtrule. h \
robots_txt/onlydisallowrobotstxt. h \
helpers. h \
helpercreator. h \
application_finishers/timeoutaf. h \
robots_txt/dummyrobotstxt. h \
delayedpdpass. h \
data_structures/hostdownloaddata. h \
application_finishers/stopfileaf. h \
threads/routinethread. h \
threads/rt0.h \
precompiled_headers. h \
data_structures/pdandpacreatedata. h \
rccapplication. h
RESOURCES += \
resource. qrc
data_structures/pagedata. h
#ifndef PAGEDATA_H
#define PAGEDATA_H
#include "includes. h"
#include "hostdata. h"
struct PageData
{
PageData();//не присваивает id
PageData(const ulong &id, const QString& url, HostData *phD);
PageData(const ulong &id, const QString& url, const QString& normalizedUrl, HostData *phD);
QString toString() const;
static ulong newIdUnsafe();
static ulong newIdSafe();
static uint hashContent(const QString& content);
static ulong lastId;
static QString normalizeUrl(const QString &urlStr);
ulong id;
HostData* phD;
QString url;
QString normalizedUrl;
ulong idFrom;
uint level;
uint outDegree;
bool blocked;
bool downloaded;
bool parsed;
QString content;
uint contentHash;
uint errorCode;
ulong replaceId;
uint downloadAttempts;
bool remove;
};
typedef QVector<PageData> PDContainer;
data_structures/pagearc. h
#ifndef PAGEARC_H
#define PAGEARC_H
#include "includes. h"
struct PageArc
{
PageArc();
PageArc(const ulong &from, const ulong &to);
PageArc(const ulong &id, const ulong &from, const ulong &to);
ulong id;
ulong from;
ulong to;
static ulong newIdUnsafe();
static ulong newIdSafe();
static ulong lastId;
QString toString() const;
};
#endif // PAGEARC_H
data_managers/datamanager. h
#ifndef DATAMANAGER_H
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 |


