📅  最后修改于: 2023-12-03 14:47:18.958000             🧑  作者: Mango
Scrapy是一款Python编写的开源网络爬虫框架,可以用来爬取互联网中的各种数据。它可以通过定义自己的管道(pipeline)和中间件(middleware)来定制化爬虫,从而实现数据的高效率、高质量地抓取和处理。
以下是Scrapy的主要特点:
Scrapy的工作流程可以大概分为以下三个步骤:
Scrapy采用异步非阻塞的方式,可以同时管理多个请求和响应,从而提高效率和性能。
下图展示了Scrapy的主要组件和工作流程:
graph TB
A[Spider] -- 发送请求 --> B[Engine]
B -- 处理请求 --> C[Scheduler]
C -- 调度请求 --> B
B -- 将响应返回给Spider --> A
A -- 处理响应 --> D[Pipeline]
D -- 数据持久化 --> E[Database/File]
在Scrapy架构中,主要由Spider、Engine、Scheduler、Downloader、Item Pipeline、Feed Exporter等组件构成。其中:
以下是使用Scrapy爬取示例网站Quotes to Scrape(http://quotes.toscrape.com/)的示例代码:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
def start_requests(self):
urls = [
'http://quotes.toscrape.com/page/1/',
'http://quotes.toscrape.com/page/2/',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.url.split("/")[-2]
filename = f'quotes-{page}.html'
with open(filename, 'wb') as f:
f.write(response.body)
self.log(f'Saved file {filename}')
在终端中执行以下命令即可启动爬虫:
scrapy crawl quotes
Scrapy是一款高效、灵活、易用的网络爬虫框架,可以帮助数据爱好者和程序员轻松实现对互联网中各种数据的抓取、清理和处理。使用Scrapy可以节省很多爬虫开发的时间和精力,大家可以尝试着去使用一下,相信肯定会让你眼前一亮!