番外篇·下:仙界游历

第四十四章:蛛后罗网 (Scrapy Framework)

← 上一章 | 返回宗门地图
路人
Py
师尊,之前的 Requests + BeautifulSoup 虽然好用,
但我要爬取几百万个网页时,速度太慢了!
而且还要自己处理多线程、重试、去重... 头都大了!
吉多
老祖
单打独斗终究有限,是时候召唤 蛛后 (Scrapy) 了。
这是一个强大的 爬虫框架,它不仅能吐丝结网,
还能指挥千百只小蜘蛛同时出击,将整个互联网的宝藏一网打尽!

1. 唤醒蛛后 (Installation & Init)

首先,安装这尊大神:pip install scrapy

然后,创建一个蜘蛛巢穴:scrapy startproject mysect

2. 编织罗网 (Spider)

在巢穴中,我们需要定义一只蜘蛛的捕食规则。

mysect/spiders/book_spider.py
import scrapy

class BookSpider(scrapy.Spider):
    name = "books"  # 蜘蛛代号
    start_urls = ['http://books.toscrape.com/']  # 狩猎场

    def parse(self, response):
        # 1. 捕食 (提取数据)
        for book in response.css('article.product_pod'):
            yield {
                'title': book.css('h3 a::attr(title)').get(),
                'price': book.css('p.price_color::text').get(),
            }

        # 2. 吐丝 (寻找下一页)
        next_page = response.css('li.next a::attr(href)').get()
        if next_page is not None:
            yield response.follow(next_page, self.parse)

3. 猎杀时刻 (Run)

在终端中下令:scrapy crawl books -o loot.json

蛛后会瞬间放出无数小蜘蛛,沿着网页链接一路狂奔,
将抓到的猎物打包成 loot.json 献给你。

神仙
姐姐
这就是框架的力量!
你只负责告诉它 "抓什么" 和 "去哪抓",
剩下的并发、下载、存储,Scrapy 全包了!

🎮 试练:蛛后真言

任务:在 Scrapy 中,用于把提取的数据交给管道 (Pipeline) 处理的关键字是什么?

小蜘蛛抓到了猎物,正在等待处理指令...
>>>
下一章:天道算数 →