scrapy 使用
时间: 2025-07-01 11:59:30 浏览: 9
### Scrapy框架的基本结构
Scrapy是一个强大的网络爬虫框架,它提供了一整套工具来帮助开发者快速构建和运行爬虫项目。Scrapy的核心组件包括Spider、Item、Pipeline等[^1]。
#### 创建Scrapy项目
在开始编写爬虫之前,首先需要创建一个新的Scrapy项目。可以通过以下命令来完成:
```bash
scrapy startproject tutorial
```
这将生成一个名为tutorial的目录,其中包含了项目的各个组成部分,如`items.py`用于定义数据模型,`pipelines.py`用于处理抓取的数据,`settings.py`用于配置项目设置,以及`spiders/`目录下的爬虫文件[^3]。
#### 定义Item
Item是Scrapy中用来承载抓取数据的容器。可以在`items.py`中定义Item类,并通过字段来表示要抓取的数据属性。例如:
```python
import scrapy
class TutorialItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
desc = scrapy.Field()
```
#### 编写Spider
Spider是Scrapy中最核心的部分之一,负责定义如何从网页中提取数据。每个Spider都是一个继承自`scrapy.Spider`的类,并且需要实现`start_requests()`方法或者`start_urls`属性来指定初始请求列表。此外,还需要定义`parse()`方法来解析响应并返回提取的数据或新的请求。
下面是一个简单的Spider示例:
```python
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提供了XPath和CSS选择器两种方式来从HTML文档中提取数据。这些选择器可以直接应用于响应对象上以获取所需的信息。
例如,使用XPath来提取所有引用文本:
```python
def parse(self, response):
for quote in response.xpath('//div[@class="quote"]'):
yield {
'text': quote.xpath('.//span[@class="text"]/text()').get(),
'author': quote.xpath('.//small[@class="author"]/text()').get(),
'tags': quote.xpath('.//div[@class="tags"]/a[@class="tag"]/text()').getall(),
}
```
#### Pipeline处理
一旦数据被提取出来,通常需要对其进行清理、验证和存储。这部分工作由Pipeline完成。可以在`pipelines.py`中定义多个Pipeline类,并在`settings.py`中启用它们。每个Pipeline都会接收到从Spider产生的Item,并对其进行操作。
#### 调试与运行
为了方便调试,可以新建一个main.py文件并在其中导入execute函数来直接运行爬虫。例如:
```python
from scrapy.cmdline import execute
execute(["scrapy", "crawl", "movie", "-o", "item.json"])
```
这样就可以直接运行爬虫并将结果输出到JSON文件中[^4]。
### 总结
以上就是使用Scrapy框架进行网络爬虫开发的基础步骤。从创建项目到定义Item,再到编写Spider和使用选择器提取数据,最后通过Pipeline处理数据,每一步都至关重要。随着实践的深入,还可以探索更多高级特性,比如中间件、扩展等功能,以便更好地利用Scrapy的强大功能。
阅读全文
相关推荐

















