آنچه در این مقاله میخوانید [پنهانسازی]
یکی از چالشهای اصلی در حوزه پردازش زبان طبیعی (NLP) برای زبان فارسی، کمبود دادههای ساختاریافته و باکیفیت است. ابزار Persian Web Scraper بهعنوان یک اسکرپر متنباز طراحی شده تا امکان استخراج محتوای متنی از وبسایتهای فارسی را بهصورت سازمانیافته فراهم کند. این ابزار علاوه بر ذخیره متن، فرادادههایی مانند عنوان، تاریخ انتشار، دستهبندی، نظرات کاربران و برچسبها را هم نگهداری میکند. برای استفاده مؤثر از این ابزار، لازم است مراحل نصب و اجرا را بهدرستی بدانیم. در این مقاله بهطور کامل روش نصب و اجرای Persian Web Scraper با Docker و Node.js را بررسی میکنیم.
سرفصل های مقاله
- پیشنیازها
- نصب Persian Web Scraper به صورت محلی با Node.js
- مرحله ۱: دریافت سورسکد
- مرحله ۲: نصب وابستگیها
- مرحله ۳: اجرای ابزار
- مرحله ۴: خروجی دادهها
- نصب Persian Web Scraper با Docker
- مرحله ۱: ساخت ایمیج Docker
- مرحله ۲: اجرای کانتینر
- مرحله ۳: استفاده از اسکریپتهای آماده
- فایل پیکربندی (config.json)
- ساختار خروجی Persian Web Scraper
- مزایا و محدودیتهای اجرای Persian Web Scraper
- مزایا
- محدودیتها
- جمع بندی
پیشنیازها
پیش از شروع نصب، باید مطمئن شوید که برخی ابزارها روی سیستم شما در دسترس هستند:
- Node.js نسخه ۱۸ یا بالاتر برای اجرای محلی
- Yarn بهعنوان ابزار مدیریت پکیج
- Docker و Docker Compose برای اجرای کانتینری
- دسترسی به اینترنت برای دانلود وابستگیها و دریافت صفحات وب
داشتن حداقل چند گیگابایت فضای خالی روی هارد نیز ضروری است، زیرا هنگام اسکرپ دادهها حجم زیادی از متون و فایلهای JSON ذخیره خواهد شد.
نصب Persian Web Scraper به صورت محلی با Node.js
مرحله ۱: دریافت سورسکد
ابتدا مخزن Persian Web Scraper را کلون کنید:
git clone https://github.com/USERNAME/persian-web-scraper.git
cd persian-web-scraper
مرحله ۲: نصب وابستگیها
با استفاده از Yarn یا NPM، کتابخانههای موردنیاز را نصب کنید:
yarn install
یا:
npm install
مرحله ۳: اجرای ابزار
پس از نصب وابستگیها میتوانید اسکرپر را برای دامنه موردنظر اجرا کنید:
yarn dev && yarn start [SUPPORTED_DOMAIN] [options]
گزینههای مهمی که میتوانید استفاده کنید:
--configFile
مسیر فایل پیکربندی JSON--verbosity
تعیین سطح گزارش (۰ تا ۱۰)--delay
تأخیر بین درخواستها--max-concurrent
تعداد درخواستهای همزمان--proxies
محدوده پورت پروکسیها
مرحله ۴: خروجی دادهها
نتایج اسکرپ بهصورت JSON ذخیره میشوند و شامل متن مقاله، تاریخ انتشار، دستهبندی، برچسبها و حتی نظرات کاربران هستند. همچنین وضعیت تمامی لینکها در دیتابیس SQLite ذخیره میشود.
نصب Persian Web Scraper با Docker
اجرای ابزار در محیط Docker مزایای زیادی دارد، از جمله جداسازی محیط، سهولت در انتقال پروژه و استفاده از پروکسیها.
مرحله ۱: ساخت ایمیج Docker
ابتدا ایمیج Docker را بسازید:
./buildDockerImages.sh myregistry
مرحله ۲: اجرای کانتینر
یک کانتینر جدید ایجاد کنید و مسیرهای ذخیرهسازی را به آن متصل کنید:
docker run -d \
--name persian_scraper \
-v $DB_PATH/:/db \
-v $CORPORA_PATH:/corpora \
-v $LOG_PATH:/log \
--mount type=bind,source=$PATH2CONFIG/config.json,target=/etc/config.json \
myregistry/webscrap/scrapper:latest \
node .build/index.js DOMAIN -c /etc/config.json
در این دستور:
$DB_PATH
مسیر دیتابیس SQLite$CORPORA_PATH
محل ذخیره کورپوس فارسی$LOG_PATH
مسیر ذخیره لاگهاDOMAIN
دامنه وبسایت موردنظر برای اسکرپ است.
مرحله ۳: استفاده از اسکریپتهای آماده
در پوشه scripts
مجموعهای از اسکریپتها وجود دارد که امکان اجرای خودکار اسکرپر روی چندین دامنه بهطور همزمان را فراهم میکنند. این ویژگی برای ساخت دیتاستهای بزرگ بسیار کاربردی است.
فایل پیکربندی (config.json)
فایل پیکربندی JSON به شما اجازه میدهد تا گزینههای پیشفرض را برای همه اجراها تعیین کنید. نمونهای از این فایل به شکل زیر است:
{
"debugVerbosity": 4,
"showInfo": true,
"showWarnings": true,
"maxConcurrent": 2,
"db": "./db",
"corpora": "./corpora",
"proxies": "3302-3306",
"hostIP": "172.17.0.1",
"logPath": "./log"
}
با این فایل میتوانید سطح گزارشگیری، تعداد درخواستهای همزمان و مسیر ذخیره دادهها را مشخص کنید.
ساختار خروجی Persian Web Scraper
نتایج ذخیرهشده شامل اطلاعات زیر هستند:
- URL مقاله
- عنوان، سرتیتر، لید و خلاصه
- تاریخ انتشار
- متن کامل مقاله همراه با نوع هر بخش (پاراگراف، تیتر، نقلقول و غیره)
- برچسبها و دستهبندیها
- نظرات کاربران با جزئیات مانند نام نویسنده و تاریخ
- تصاویر و متن جایگزین آنها
این ساختار خروجی امکان استفاده مستقیم از دادهها برای ساخت کورپوس فارسی و توسعه مدلهای NLP را فراهم میکند.
مزایا و محدودیتهای اجرای Persian Web Scraper
مزایا
- سهولت اجرا با Docker و Node.js
- پشتیبانی از پروکسی و مدیریت آیپی
- ذخیره دادهها همراه با فراداده غنی
- انعطافپذیری بالا در پیکربندی
محدودیتها
- نیاز به فضای ذخیرهسازی بزرگ برای کورپوسهای عظیم
- احتمال مسدود شدن از سمت برخی وبسایتها
- نیاز به پاکسازی دادهها برای حذف اطلاعات اضافی
جمع بندی
اجرای صحیح Persian Web Scraper چه در حالت محلی با Node.js و چه در محیط Docker به پژوهشگران و توسعهدهندگان کمک میکند تا کورپوس فارسی باکیفیتی برای پروژههای پردازش زبان طبیعی (NLP) ایجاد کنند. این ابزار با حفظ فراداده و ساختار متون، دادههایی ارزشمند در اختیار کاربران قرار میدهد. هرچند محدودیتهایی مانند حجم بالای دادهها وجود دارد، اما مزایای آن در مقایسه با روشهای سنتی جمعآوری متن بسیار چشمگیر است.