pdf文档 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 页请下载阅读 -
文档评分
请文明评论,理性发言.