یک کتابخانه خزنده انعطاف پذیر nodejs —— x-crawl

x-crawl یک کتابخانه خزنده انعطاف پذیر nodejs است. این می تواند صفحات را به صورت دسته ای، درخواست های شبکه به صورت دسته ای، دانلود منابع فایل به صورت دسته ای، نظرسنجی و خزیدن، و غیره را بخزد. از خزیدن حالت ناهمزمان/همگام پشتیبانی می کند. استفاده بر روی nodejs قابل اجرا و ساده است و برای توسعه دهندگان JS/TS مناسب است.
اگر احساس خوبی دارید، می توانید به مخزن x-crawl یک ستاره بدهید تا از آن پشتیبانی کند، ستاره شما انگیزه ای برای به روز رسانی من خواهد بود.
- 🔥 ناهمزمان/همزمان – پشتیبانی از خزیدن دسته ای حالت ناهمزمان/همگام.
- ⚙️ عملکردهای چندگانه – خزیدن دسته ای صفحات، درخواست های شبکه دسته ای، دانلود دسته ای منابع فایل، خزیدن نظرسنجی و غیره.
- 🖋️ سبک نوشتاری انعطاف پذیر – پیکربندیهای خزیدن متعدد و راههایی برای دریافت نتایج خزیدن.
- ⏱️ خزیدن فاصله ای – بدون فاصله / فاصله ثابت / فاصله تصادفی، می توانید از خزیدن همزمان زیاد استفاده کنید / اجتناب کنید.
- ☁️ Crawl SPA – خزیدن دسته ای SPA (برنامه تک صفحه ای) برای تولید محتوای از پیش رندر شده (به عنوان مثال “SSR” (رندر سمت سرور)).
- ⚒️ کنترل صفحات – مرورگرهای Headless می توانند فرم ها، فشار دادن کلید، اقدامات رویداد، ایجاد اسکرین شات از صفحات و غیره را ارسال کنند.
- 🧾 ضبط ضبط – نتایج خزیده شده را ضبط و ضبط کنید و یادآورها را برجسته کنید.
- 🦾تایپ اسکریپت – انواع خود را، پیاده سازی انواع کامل از طریق ژنریک.
مثال
ضبط زمان: به عنوان مثال، هر روز تصویر روی جلد فهرستهای Airbnb Plus را به صورت خودکار ثبت کنید:
// 1.Import module ES/CJS
import xCrawl from 'x-crawl'
// 2.Create a crawler instance
const myXCrawl = xCrawl({
timeout: 10000, // overtime time
intervalTime: { max: 3000, min: 2000 } // crawl interval
})
// 3.Set the crawling task
/*
Call the startPolling API to start the polling function,
and the callback function will be called every other day
*/
myXCrawl.startPolling({ d: 1 }, async (count, stopPolling) => {
// Call crawlPage API to crawl Page
const { page } = await myXCrawl.crawlPage('https://zh.airbnb.com/s/*/plus_homes')
// set request configuration
const plusBoxHandle = await page.$('.a1stauiv')
const requestConfig = await plusBoxHandle!.$$eval('picture img', (imgEls) => {
return imgEls.map((item) => item.src)
})
// Call the crawlFile API to crawl pictures
myXCrawl.crawlFile({ requestConfig, fileConfig: { storeDir: './upload' } })
// Close page
page.close()
})
نتیجه اجرا:
توجه داشته باشید: به میل خود خزی نکنید، می توانید آن را بررسی کنید robots.txt پروتکل قبل از خزیدن این فقط برای نشان دادن نحوه استفاده از x-crawl است.
بیشتر
برای مستندات دقیق تر، لطفاً بررسی کنید: https://github.com/coder-hxl/x-crawl