实战项目二:社交媒体监控

📂 所属阶段:第四阶段 — 实战演练(项目开发篇)


1. CrawlSpider

from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

class SocialMediaSpider(CrawlSpider):
    name = 'social_media'
    allowed_domains = ['example.com']
    start_urls = ['http://example.com']
    
    rules = (
        # 提取用户链接
        Rule(
            LinkExtractor(allow=r'/user/\d+'),
            callback='parse_user',
            follow=True
        ),
        # 提取帖子链接
        Rule(
            LinkExtractor(allow=r'/post/\d+'),
            callback='parse_post'
        ),
    )
    
    def parse_user(self, response):
        yield {
            'username': response.css('h1::text').get(),
            'followers': response.css('span.followers::text').get(),
        }
    
    def parse_post(self, response):
        yield {
            'title': response.css('h2::text').get(),
            'content': response.css('div.content::text').get(),
            'likes': response.css('span.likes::text').get(),
        }

2. 小结

CrawlSpider 优势:

1. 规则驱动:自动提取链接
2. 灵活配置:支持复杂规则
3. 自动跟踪:自动翻页

应用场景:
- 社交媒体监控
- 论坛爬虫
- 新闻聚合

💡 记住:CrawlSpider 是处理复杂网站的利器。学会用它,你就掌握了高级爬虫技巧。


🔗 扩展阅读