Scrapy 框架入门:高效搭建爬虫项目
Scrapy 是一个强大的 Python 爬虫框架,广泛应用于数据抓取和爬虫开发。它可以帮助开发者快速构建高效的网络爬虫。今天,就让我们一起从零开始,学习如何高效搭建 Scrapy 爬虫项目。
一、环境准备
在开始之前,请确保你已经安装了 Python 环境(建议 3.6+ 版本)和 Scrapy 框架。如果尚未安装,可以通过以下命令安装 Scrapy:
pip install scrapy
二、创建第一个 Scrapy 项目
Scrapy 使用项目化的方式来组织爬虫代码。让我们创建一个名为 “tutorial” 的项目:
scrapy startproject tutorial
这个命令会创建一个标准的 Scrapy 项目结构:
tutorial/scrapy.cfg # 项目配置文件tutorial/ # 项目 Python 模块__init__.pyitems.py # 数据项定义文件middlewares.py # 中间件配置pipelines.py # 数据处理管道settings.py # 项目设置spiders/ # 爬虫代码存放目录__init__.py
三、编写第一个爬虫
爬虫(Spider)是 Scrapy 的核心组件,负责定义如何抓取网站数据。让我们创建一个爬取名人名言网站的爬虫。
进入项目目录并创建一个爬虫:
cd tutorial
scrapy genspider quotes quotes.toscrape.com
这会生成一个名为 quotes
的爬虫模板。打开生成的 quotes.py
文件,编写以下代码:
import scrapyclass QuotesSpider(scrapy.Spider):name = "quotes"start_urls = ["https://quotes.toscrape.com/page/1/","https://quotes.toscrape.com/page/2/",]def parse(self, response):for quote in response.css("div.quote"):yield {"text": quote.css("span.text::text").get(),"author": quote.css("small.author::text").get(),"tags": quote.css("div.tags a.tag::text").getall(),}
四、运行爬虫
保存文件后,在终端中运行以下命令启动爬虫:
scrapy crawl quotes
Scrapy 会输出详细的日志信息,并抓取数据。
五、爬取多页数据
很多网站的内容分布在多个页面。Scrapy 可以自动跟踪链接并爬取后续页面。修改爬虫以自动跟踪 “下一页” 链接:
def parse(self, response):for quote in response.css("div.quote"):yield {"text": quote.css("span.text::text").get(),"author": quote.css("small.author::text").get(),"tags": quote.css("div.tags a.tag::text").getall(),}next_page = response.css("li.next a::attr(href)").get()if next_page is not None:yield response.follow(next_page, callback=self.parse)
六、总结
通过本教程,我们学习了:
- 如何创建 Scrapy 项目。
- 编写基本爬虫。
- 使用选择器提取数据。
- 跟踪链接爬取多页内容。
Scrapy 的强大之处远不止于此,它还提供了:
- 数据管道(Pipeline)处理。
- 中间件(Middleware)扩展。
- 自动限速和并发控制。
- 多种数据导出格式支持。