Scrapy 2.2 Documentation
1.35 MB
348 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
英语 | .pdf | 3 |
摘要 | ||
文档详细介绍了Scrapy 2.2的核心功能和新特性,包括支持dataclass和attrs对象作为项目类型的能力,扩展了项目定义的灵活性。此外,Scrapy 2.2支持多种序列化格式,如JSON、CSV和XML,通过Feed Exports实现数据导出。文档还涉及了对BeautifulSoup的支持,扩展了HTML/XML解析能力,并介绍了版本更新的详细信息,包括新功能、向后兼容性更改和错误修复。 | ||
AI总结 | ||
# 《Scrapy 2.2 Documentation》摘要
## 1. 声明Item子类
Scrapy通过简单的类定义语法和`Field`对象来声明Item子类。Item的字段与Django模型类似,但更简单,字段类型不需要严格声明。示例如下:
```python
import scrapy
class Product(scrapy.Item):
name = scrapy.Field()
price = scrapy.Field()
stock = scrapy.Field()
tags = scrapy.Field()
last_updated = scrapy.Field(serializer=str)
```
## 2. 使用dataclasses定义Item(新增于2.2版)
Scrapy 2.2支持通过`dataclasses`定义Item,可以自定义字段序列化-metadata。
```python
from dataclasses import dataclass
@dataclass
class CustomItem:
one_field: str
another_field: int
```
支持Python 3.7+,3.6需使用dataclasses回port。
## 3. 使用attr.s定义Item(新增于2.2版)
`attr.s()`支持定义Item类,允许导出所有字段,即使初始对象没有所有字段值。使用前需安装`attrs`包。
```python
import attr
@attr.s
class CustomItem:
one_field = attr.ib()
another_field = attr.ib()
```
## 4. Scrapy版本支持
- 支持Python 3.5.2+(CPython和PyPy)。
- 2.0以后不再支持Python 2。
- 推荐在Windows环境下使用Anaconda/Miniconda。
## 5. 常见问题解答
- **是否支持HTTP代理?** 支持,通过`HttpProxyMiddleware`实现。
- **如何在多页间抓取Item属性?** 参见《传递回调函数的额外数据》。
- **Scrapy是否抄袭了Django?** Scrapy受到Django启发,并公开承认其优点,鼓励开发者互相借鉴。
## 6. 发布说明
### 6.1 Scrapy 2.2.0
- **新增功能:**
- 支持`dataclass`和`attr.s`定义Item。
- 新增`TextResponse.json`方法。
- 新增`bytes_received`信号,支持取消响应下载。
- **向后兼容性破坏:**
- 停止支持Python 3.5.0和3.5.1。
- `TextResponse.body_as_unicode`已弃用,改用`TextResponse.text`。
- `scrapy.item.BaseItem`已弃用,改用`scrapy.item.Item`。
- **弃用:**
- `scrapy.item.DictItem`已弃用,改用`Item`。
- `scrapy.xlib`已移除。
- **其他改进:**
- 更新持续集成测试的选项包最小版本(如`botocore` 1.3.23、`Pillow` 3.4.2)。
- 增加GitHub问题模板。
### 6.2 旧版本更新
- **Scrapy 1.7.4**:修复`ItemLoader`初始化问题。
- **Scrapy 1.7.3**:限制Python 3.4使用`lxml` 4.3.5或更低版本。
- **Scrapy 1.7.2**:修复Python 2支持问题。
## 7. 基本概念
### 7.1 Item Pipeline
- 激活Item Pipeline组件需将其类添加到`ITEM_PIPELINES`设置。
- 处理顺序由整数值决定,低值优先。
示例:
```python
ITEM_PIPELINES = {
'myproject.pipelines.PricePipeline': 300,
'myproject.pipelines.JsonWriterPipeline': 800,
}
```
### 7.2 数据导出
- **支持的序列化格式:** JSON、JSON lines、CSV、XML,可通过`FEED_EXPORTERS`扩展支持。
- 数据导出功能可通过Feed Exports生成回馈文件。
---
以上是《Scrapy 2.2 Documentation》的核心内容和关键信息的总结,涵盖了Item定义、版本支持、发布说明及常见功能的使用。 |
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
341 页请下载阅读 -
文档评分