جمع‌آوری عناوین اخبار از یک وب‌سایت با Scrapy

جمع‌آوری عناوین اخبار از یک وب‌سایت با Scrapy

مقدمه:
Scrapy یکی از قدرتمندترین فریم‌ورک‌های پایتون برای خزنده‌سازی وب و استخراج داده‌ها است. در این مقاله، یک پروژه سبک و ساده برای جمع‌آوری عناوین اخبار از یک وب‌سایت خبری را بررسی خواهیم کرد. این پروژه به شما کمک می‌کند تا اصول اولیه کار با Scrapy را یاد بگیرید و به‌راحتی داده‌ها را از صفحات وب استخراج کنید.

پیش‌نیازها

برای اجرای این پروژه، ابتدا باید Python و Scrapy را نصب کنید. اگر هنوز Scrapy را نصب نکرده‌اید، می‌توانید با دستور زیر آن را نصب کنید:

pip install scrapy

ساخت یک پروژه جدید در Scrapy

ابتدا یک پروژه Scrapy جدید ایجاد می‌کنیم:

scrapy startproject news_scraper

سپس وارد پوشه پروژه شوید:

cd news_scraper

ایجاد یک اسپایدر (خزنده)

در مرحله بعد، یک اسپایدر برای جمع‌آوری عناوین اخبار از یک وب‌سایت خبری ایجاد می‌کنیم. در اینجا از وب‌سایت example.com/news به‌عنوان نمونه استفاده می‌کنیم:

scrapy genspider news_spider example.com

فایل جدیدی به نام news_spider.py در مسیر news_scraper/spiders/ ایجاد خواهد شد. آن را باز کنید و کد زیر را در آن قرار دهید:

import scrapy

class NewsSpider(scrapy.Spider):
    name = "news_spider"
    start_urls = ["https://example.com/news"]

    def parse(self, response):
        for article in response.css("div.article"):
            yield {
                "title": article.css("h2::text").get(),
                "link": article.css("a::attr(href)").get(),
            }

اجرای اسپایدر و ذخیره داده‌ها

اکنون می‌توانیم اسپایدر خود را اجرا کنیم و عناوین اخبار را در یک فایل ذخیره کنیم:

scrapy crawl news_spider -o news.json

این دستور عناوین و لینک‌های اخبار را جمع‌آوری کرده و در یک فایل news.json ذخیره می‌کند.

نتیجه‌گیری

در این پروژه، نحوه ایجاد یک خزنده ساده برای جمع‌آوری عناوین اخبار را بررسی کردیم. Scrapy ابزار قدرتمندی است که می‌تواند برای پروژه‌های کوچک و بزرگ استخراج داده از وب استفاده شود. در مقالات بعدی، می‌توانیم به موضوعاتی مانند ذخیره داده‌ها در پایگاه داده، مدیریت ربات‌ها و پیشرفته‌سازی خزنده‌ها بپردازیم.

🔥 نظر شما چیست؟ آیا تجربه‌ای در کار با Scrapy داشته‌اید؟ نظرات خود را با ما به اشتراک بگذارید! 🚀

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *