Skip to main content

发行说明

Scrapy 1.3.3(2017-03-10)

Bug修复

  • SpiderLoader 再次提升 ImportError 缺省的依赖和错误的 SPIDER_MODULES。这些异常从1.3.0开始作为警告停止。引入新设置以在需要时在警告或异常之间切换;详见 SPIDER_LOADER_WARN_ONLY

Scrapy 1.3.2(2017-02-13)

Bug修复

  • 转换为/从dicts(utils.reqser)(issue 2510)时保留请求类。

  • 在教程(issue 2551)中为作者字段使用一致的选择器。

  • 修复Twisted 17+(issue 2558)中的TLS兼容性

Scrapy 1.3.1(2017-02-08)

新功能

  • 支持 'True''False' 字符串值的布尔设置(issue 2519);你现在可以做一些类似 scrapy crawl myspider -s REDIRECT_ENABLED=False 的东西。

  • 支持kwargs与 response.xpath() 使用 XPath变量 和ad-hoc命名空间声明;这需要至少Parsel v1.1(issue 2457)。

  • 添加对Python 3.6(issue 2485)的支持。

  • 在PyPy上运行测试(警告:一些测试仍然失败,因此PyPy不支持)。

Bug修复

  • 强制执行 DNS_TIMEOUT 设置(issue 2496)。

  • 修复 view 命令;这是一个在v1.3.0(issue 2503)的回归。

  • 使用文件/图像管道(issue 2460)修复有关 *_EXPIRES settings 的测试。

  • 修复使用基本项目模板(issue 2466)时生成的管道类的名称。

  • 修复与Twisted 17+(issue 2496issue 2528)的兼容性。

  • 修复Python 3.6(issue 2511)上的 scrapy.Item 继承。

  • SPIDER_MIDDLEWARESDOWNLOADER_MIDDLEWARESEXTENIONSSPIDER_CONTRACTSissue 2420)中的组件订单强制执行数值。

文档

  • Reword行为准则部分,并升级为Contributor Covenant v1.4(issue 2469)。

  • 澄清传递spider参数将它们转换为蜘蛛属性(issue 2483)。

  • 文档 formid 参数在 FormRequest.from_response()issue 2497)。

  • 将.rst扩展名添加到README文件(issue 2507)。

  • 提及LevelDB缓存存储后端(issue 2525)。

  • 在样本回调代码(issue 2533)中使用 yield

  • 添加有关使用 .re()/.re_first()issue 1704)解码的HTML实体的注释。

  • 错别字(issue 2512issue 2534issue 2531)。

清理

  • 删除 MetaRefreshMiddlewareissue 2542)中的冗余检查。

  • LinkExtractor 中更快地检查允许/拒绝模式(issue 2538)。

  • 删除支持旧Twisted版本(issue 2544)的死代码。

Scrapy 1.3.0(2016-12-21)

这个版本很快就来到1.2.2之后的一个主要原因:发现从0.18到1.2.2(包括)的版本使用一些从Twisted(scrapy.xlib.tx.*)的反向代码,即使新的Twisted模块可用。 Scrapy现在直接使用 twisted.web.clienttwisted.internet.endpoints。 (另请参阅下面的清理。)

由于这是一个重大的变化,我们希望快速修复错误,而不破坏任何使用1.2系列的项目。

新功能

  • MailSender 现在接受单字符串作为 tocc 参数(issue 2272)的值,

  • scrapy fetch urlscrapy shell urlfetch(url) 内部scrapy外壳现在遵循HTTP重定向默认(issue 2290);有关详细信息,请参阅 fetchshell

  • HttpErrorMiddleware 现在使用 INFO 级别而不是 DEBUG 记录错误;这是技术上 向后不兼容 所以请检查您的日志解析器。

  • 默认情况下,记录器名称现在使用长形路径,例如。 [scrapy.extensions.logstats],而不是以前版本(例如 [scrapy])的较短“顶级”变体;这是 向后不兼容 如果你有日志解析器期望短日志记录器名称部分。您可以使用 LOG_SHORT_NAMES 设置为 True 切换回短记录器名称。

依赖和清理

  • Scrapy现在需要Twisted> = 13.1,这是许多Linux发行版的情况。

  • 因此,我们摆脱了 scrapy.xlib.tx.* 模块,它复制了一些Twisted代码为用户停留了一个“老”的Twisted版本

  • ChunkedTransferMiddleware 已弃用,并从默认下载器中间件中删除。

Scrapy 1.2.3(2017-03-03)

  • 包装修复:disallow unsupported setup.py中的扭曲版本

Scrapy 1.2.2(2016-12-06)

Bug修复

  • 修复 open_spider()issue 2011)上的管道故障时的隐藏追溯

  • 修复嵌入式IPython shell变量(修复重新出现在1.2.0中的 issue 396,在 issue 2418 中修复)

  • 处理robots.txt时的几个补丁:

    • 句柄(非标准)相对网站地图网址(issue 2390

    • 处理Python 2中的非ASCII URL和用户代理(issue 2373

文档

其他变化

  • conda-forge 作为Scrappy的官方conda频道(issue 2387

  • 尝试在非文本响应(issue 2264)上使用 .css().xpath() 时更有帮助的错误消息

  • startproject 命令现在生成样本 middlewares.py 文件(issue 2335

  • scrapy version 详细输出(issue 2404)中添加更多依赖关系的版本信息

  • 从源分发(issue 2386)删除所有 *.pyc 文件

Scrapy 1.2.1(2016-10-21)

Bug修复

  • 在建立TLS/SSL连接(issue 2314)时,包含OpenSSL更多的允许默认密码。

  • 修复在非ASCII URL重定向(issue 2321)上的“位置”HTTP标头解码。

文档

其他变化

  • 在内置蜘蛛模板(issue 2299)中从 start_urls 中删除 www.

Scrapy 1.2.0(2016-10-03)

新功能

  • 新的 FEED_EXPORT_ENCODING 设置,用于自定义将项目写入文件时使用的编码。这可用于在JSON输出中关闭 \uXXXX 转义。这对于那些想要除UTF-8之外的用于XML或CSV输出(issue 2034)的人也很有用。

  • startproject 命令现在支持可选的目标目录来覆盖基于项目名称(issue 2005)的默认目录。

  • 用于记录请求序列化故障(issue 1610)的新 SCHEDULER_DEBUG 设置。

  • JSON编码器现在支持 set 实例(issue 2058)的序列化。

  • application/json-amazonui-streaming 解释为 TextResponseissue 1503)。

  • 默认情况下,当使用shell工具(shellinspect_response)(issue 2248)时,将导入 scrapy

Bug修复

  • DefaultRequestHeaders中间件现在在UserAgent中间件(issue 2088)之前运行。 警告:这在技术上向后不兼容,但我们认为这是一个错误修复。

  • 使用 .scrapy 数据目录的HTTP缓存扩展和插件现在可在项目外(issue 1581)工作。 警告:这在技术上向后不兼容,虽然我们认为这是一个错误修复。

  • Selector 不允许通过 responsetextissue 2153)。

  • 固定使用 scrapy parseissue 2169)记录错误的回调名称。

  • 修复了一个奇怪的gzip解压缩错误(issue 1606)。

  • 当使用 CrawlSpiderscrapy parseissue 2225)时修复所选回调。

  • 当蜘蛛没有产生项目(issue 872)时修复无效的JSON和XML文件。

  • StreamLogger 实现 flush() 以避免日志中的警告(issue 2125)。

重构

测试和要求

Scrapy的新需求基准是Debian 8“Jessie”。它以前是Ubuntu 12.04精确。这在实践中意味着我们使用这些(主)包版本至少运行连续集成测试:Twisted 14.0,pyOpenSSL 0.14,lxml 3.4。

Scrapy可以很好地与旧版本的这些软件包(代码库仍然有旧的Twisted版本的开关),但不能保证(因为它不再测试)。

文档

Scrapy 1.1.4(2017-03-03)

  • 包装修复:disallow unsupported setup.py中的扭曲版本

Scrapy 1.1.3(2016-09-22)

Bug修复

  • ImagesPipelineFilesPipeline 的子类的类属性如它们在1.1.1之前一样工作(issue 2243,修复 issue 2198

文档

Scrapy 1.1.2(2016-08-18)

Bug修复

  • 引入缺少的 IMAGES_STORE_S3_ACL 设置以在将图像上传到S3时覆盖 ImagesPipeline 中的默认ACL策略(请注意,自Scrapy 1.1.0起,默认ACL策略为“private”,而不是“public-read”

  • IMAGES_EXPIRES 默认值设置回90(回归在1.1.1中引入)

Scrapy 1.1.1(2016-07-13)

Bug修复

  • 在CONNECT请求中向HTTPS代理(issue 2069)添加“主机”标头

  • 在选择响应类别(issue 2001,修复 issue 2000)时使用响应 body

  • 不要在具有错误netloc的规范化URL上失败(issue 2038,修复 issue 2010

  • HttpCompressionMiddleware (和 SitemapSpider)的几个修复:

  • 在针对IP地址主机(issue 2094,修复 issue 2092)验证证书时捕获(并忽略警告)异常

  • 使 FilesPipelineImagesPipeline 再次向后兼容关于使用传统类属性进行定制(issue 1989,修复 issue 1985

新功能

  • 在项目文件夹(issue 2052)外启用genspider命令

  • 默认情况下重试HTTPS CONNECT TunnelErrorissue 1974

文档

测试

  • 将Travis CI和Pin pytest-cov的py.test要求升级到2.2.1(issue 2095

Scrapy 1.1.0(2016-05-11)

这个1.1版本带来了很多有趣的功能和错误修复:

  • Scrapy 1.1具有beta Python 3支持(需要Twisted> = 15.5)。有关更多详细信息和一些限制,请参阅 Beta Python 3支持

  • 热门新功能:

  • 这些错误修复可能需要您注意:

    • 不要在默认情况下重试错误请求(HTTP 400)(issue 1289)。如果您需要旧的行为,请将 400 添加到 RETRY_HTTP_CODES

    • 修复shell文件参数处理(issue 1710issue 1550)。如果你尝试 scrapy shell index.html 它会尝试加载URL http://index.html,使用 scrapy shell ./index.html 加载本地文件。

    • 默认情况下,新创建的项目(issue 1724)启用了Robots.txt合规性。 Scrapy还会等待下载robots.txt,然后再继续抓取(issue 1735)。如果要禁用此行为,请在创建新项目后在 settings.py 文件中更新 ROBOTSTXT_OBEY

    • 出口商现在工作在unicode,而不是字节默认(issue 1080)。如果你使用 PythonItemExporter,你可能想更新你的代码,禁用二进制模式,现在已弃用。

    • 接受包含点的XML节点名称为有效(issue 1533)。

    • 当将文件或映像上传到S3(使用 FilesPipelineImagesPipeline)时,默认ACL策略现在是“私有”而不是“公共” 警告:向后不兼容!。您可以使用 FILES_STORE_S3_ACL 更改它。

    • 我们重新实现了 canonicalize_url() 以获得更正确的输出,尤其是对于具有非ASCII字符(issue 1947)的URL。与以前的scrapy版本相比,这可以改变链接提取器输出。这也可能会使一些缓存条目无效,您可以从1.1之前的运行。 警告:向后不兼容!

继续阅读有关其他改进和错误修复的更多详细信息。

Beta Python 3支持

我们一直在 努力使Scrapy在Python 3上运行。因此,现在您可以在Python 3.3,3.4和3.5上运行蜘蛛程序(需要Twisted> = 15.5)。某些功能仍然缺失(某些功能可能永远不会移植)。

几乎所有内置扩展/中间件都可以工作。但是,我们知道Python 3中的一些限制:

  • Scrapy在使用Python 3的Windows上不起作用

  • 不支持发送电子邮件

  • 不支持FTP下载处理程序

  • 不支持Telnet控制台

其他新功能和增强功能

弃用和删除

  • 添加 to_bytesto_unicode,弃用 str_to_unicodeunicode_to_str 功能(issue 778)。

  • 引入 binary_is_text,替换 isbinarytext 的使用(但具有反向返回值)(issue 1851

  • optional_features 集已删除(issue 1359)。

  • --lsprof 命令行选项已删除(issue 1689)。 警告:向后不兼容,但不会中断用户代码。

  • 不推荐使用以下数据类型(issue 1720):

    • scrapy.utils.datatypes.MultiValueDictKeyError

    • scrapy.utils.datatypes.MultiValueDict

    • scrapy.utils.datatypes.SiteNode

  • 以前捆绑的 scrapy.xlib.pydispatch 库已被弃用,并被 pydispatcher 取代。

重新定位

Bug修复

Scrapy 1.0.7(2017-03-03)

  • 包装修复:disallow unsupported setup.py中的扭曲版本

Scrapy 1.0.6(2016-05-04)

  • FIX:RetryMiddleware现在对非标准HTTP状态代码(issue 1857

  • FIX:Filestorage HTTP缓存正在检查错误的修改时间(issue 1875

  • DOC:支持Sphinx 1.4+(issue 1893

  • DOC:选择器一致性示例(issue 1869

Scrapy 1.0.5(2016-02-04)

Scrapy 1.0.4(2015-12-30)

Scrapy 1.0.3(2015-08-11)

Scrapy 1.0.2(2015-08-06)

Scrapy 1.0.1(2015-07-01)

Scrapy 1.0.0(2015-06-19)

在这个主要版本中,你会发现很多新的功能和错误修正。请务必检查我们更新的 概述,以了解一些变化,以及我们刷新的 教程

支持在蜘蛛中返回字典

声明和返回Scrapy项目不再需要从您的蜘蛛收集抓取的数据,现在可以返回显式的字典。

经典版本

class MyItem(scrapy.Item):
    url = scrapy.Field()

class MySpider(scrapy.Spider):
    def parse(self, response):
        return MyItem(url=response.url)

新版本

class MySpider(scrapy.Spider):
    def parse(self, response):
        return {'url': response.url}

每蜘蛛设置(GSoC 2014)

最后一次Google Summer of Code项目完成了用于填充设置的机制的重要重新设计,引入了明确的优先级以覆盖任何给定的设置。作为这一目标的延伸,我们为专门为单个蜘蛛设置的设置添加了新的优先级,允许他们重新定义项目设置。

开始使用它通过在你的蜘蛛中定义一个 custom_settings 类变量:

class MySpider(scrapy.Spider):
    custom_settings = {
        "DOWNLOAD_DELAY": 5.0,
        "RETRY_ENABLED": False,
    }

阅读更多关于设置人口:设置

Python日志记录

Scrapy 1.0已经远离了Twisted日志记录,以支持Python内置的默认日志记录系统。我们保持大多数旧的自定义界面的向后兼容性来调用日志记录功能,但是您会收到警告,完全切换到Python日志API。

旧版

from scrapy import log
log.msg('MESSAGE', log.INFO)

新版本

import logging
logging.info('MESSAGE')

使用蜘蛛记录仍然相同,但在 log() 方法的基础上,您将可以访问为蜘蛛创建的自定义 logger 以发出日志事件:

class MySpider(scrapy.Spider):
    def parse(self, response):
        self.logger.info('Response received')

阅读更多在日志文档:记录

抓取工具API重构(GSoC 2014)

最后一个Google夏季代码的另一个里程碑是重构内部API,寻求更简单和更方便的使用。检查新的核心接口:核心API

一个常见的情况,你将面临这些变化是从脚本运行Scrapy。下面是一个如何使用新API手动运行Spider的简单示例:

from scrapy.crawler import CrawlerProcess

process = CrawlerProcess({
    'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})
process.crawl(MySpider)
process.start()

请记住,此功能仍在开发中,其API可能会更改,直到达到稳定状态。

查看更多运行Scrapy的脚本示例:常见做法

模块重定位

尝试改进Scrapy的一般结构的模块有大的重新排列。主要的变化是将各种子包分离成新项目,并将 scrapy.contribscrapy.contrib_exp 解决为顶级包。向内兼容性保留在内部重定位之间,而导入不推荐使用的模块需要警告指示它们的新位置。

完整的重定位列表

外包

注解

这些扩展程序经过了一些细微的更改,例如一些设置名称已更改。请检查每个新存储库中的文档,以熟悉新的用法。

旧位置

新位置

scrapy.commands.deploy

scrapyd客户端 (请参阅其他替代选项:部署蜘蛛

scrapy.contrib.djangoitem

scrapy-djangoitem

scrapy.webservice

scrapy-jsonrpc

scrapy.contrib_expscrapy.contrib 溶解

旧位置

新位置

scrapy.contrib _exp.downloadermidd leware.decompression

scrapy.downloadermiddlewares.decom pression

scrapy.contrib _exp.iterators

scrapy.utils.iterators

scrapy.contrib.downloadermiddleware

scrapy.downloadermiddlewares

scrapy.contrib.exporter

scrapy.exporters

scrapy.contrib.linkextractors

scrapy.linkextractors

scrapy.contrib.loader

scrapy.loader

scrapy.contrib.loader.processor

scrapy.loader.processors

scrapy.contrib.pipeline

scrapy.pipelines

scrapy.contrib.spidermiddleware

scrapy.spidermiddlewares

scrapy.contrib.spiders

scrapy.spiders

  • scrapy.contrib.closespider

  • scrapy.contrib.corestats

  • scrapy.contrib.debug

  • scrapy.contrib.feedexport

  • scrapy.contrib.httpcache

  • scrapy.contrib.logstats

  • scrapy.contrib.memdebug

  • scrapy.contrib.memusage

  • scrapy.contrib.spiderstate

  • scrapy.contrib.statsmailer

  • scrapy.contrib.throttle

scrapy.extensions。*

多重重命名和模块统一

旧位置

新位置

scrapy.command

scrapy.commands

scrapy.dupefilter

scrapy.dupfilters

scrapy.linkextractor

scrapy.linkextractors

scrapy.spider

scrapy.spiders

scrapy.squeue

scrapy.squeues

scrapy.statscol

scrapy.statscollectors

scrapy.utils.decorator

scrapy.utils.decorators

类重命名

旧位置

新位置

SpiderManager

scrapy.spiderloader.SpiderLoader

设置重命名

旧位置

新位置

SPIDER _MANAGER _CLASS

SPIDER _LOADER _CLASS

更改日志

新功能和增强功能

弃用和删除

重新定位

文档

Bug修复

  • 项目多继承修复(issue 353issue 1228

  • ItemLoader.load_item:遍历字段副本(issue 722

  • 修复Deferred(RobotsTxtMiddleware)(issue 1131issue 1197)中的未处理错误

  • 强制将DOWNLOAD_TIMEOUT读为int(issue 954

  • scrapy.utils.misc.load_object应该打印完整跟踪(issue 902

  • 修复“.local”主机名(issue 878)的错误

  • 修复启用的扩展,中间件,管道信息不再打印(issue 879

  • 修复dont_merge_cookies在meta(issue 846)上设置为false时的错误行为

Python 3进行中支持

  • 禁用scrapy.telnet如果twisted.conch不可用(issue 1161

  • 修复ajaxcrawl.py(issue 1162)中的Python 3语法错误

  • 更多python3兼容性更改为urllib(issue 1121

  • assertItemsEqual在Python 3中重命名为assertCountEqual。(issue 1070

  • 导入unittest.mock(如果可用)。 (issue 1066

  • 更新弃用的cgi.parse_qsl以使用六的parse_qsl(issue 909

  • 防止Python 3端口回归(issue 830

  • PY3:使用MutableMapping for python 3(issue 810

  • PY3:使用six.BytesIO和six.moves.cStringIO(issue 803

  • PY3:修复xmlrpclib和电子邮件导入(issue 801

  • PY3:使用六个机器人parser和urlparse(issue 800

  • PY3:使用six.iterkeys,six.iteritems和tempfile(issue 799

  • PY3:固定对象的has_key和使用six.moves.configparser(issue 798

  • PY3:use six.moves.cPickle(issue 797

  • PY3使得可以在Python3(issue 776)中运行一些测试,

测试

  • 从py3-ignores(issue 1243)中删除不必要的行

  • 在收集测试(issue 1206)时修复pytest的剩余警告

  • 将文档构建添加到travis(issue 1234

  • TST不从已弃用的模块收集测试。 (issue 1165

  • 在测试中安装service_identity包以防止警告(issue 1168

  • 在测试(issue 1152)中修复已弃用的设置API

  • 使用POST方法为webclient添加测试,没有任何正文(issue 1089

  • py3-ignores.txt支持注释(issue 1044

  • 现代化一些断言(issue 835

  • 选择器.__ repr__测试(issue 779

代码重构

  • CSVFeedSpider清理:使用iterate_spider_output(issue 1079

  • 从scrapy.utils.spider.iter_spider_output(issue 1078)中删除不必要的检查

  • 分支pep8(issue 992

  • 从walk_modules()(issue 871)中删除未使用的“load = False”参数

  • 为了一致性,在 SpiderState 扩展中使用 job_dir 助手。 (issue 805

  • 将“sflo”局部变量重命名为更加隐秘的“log_observer”(issue 775

Scrapy 0.24.6(2015-04-20)

Scrapy 0.24.5(2015-02-25)

Scrapy 0.24.4(2014-08-09)

Scrapy 0.24.3(2014-08-09)

Scrapy 0.24.2(2014-07-08)

Scrapy 0.24.1(2014-06-27)

  • 修复已弃用的CrawlerSettings并增加与.defaults属性(commit 8e3f20a)的向后兼容性

Scrapy 0.24.0(2014-06-26)

增强

Bug修复

  • 在RegexLinkExtractor(issue 561)中创建链接时编码unicode URL值

  • 忽略ItemLoader处理器(issue 556)中的值

  • 在SGMLLinkExtractor和HtmlParserLinkExtractor(issue 485issue 574)中有一个内部标记时修复链接文本

  • 修正对不推荐使用的类(issue 581issue 584)子类化的错误检查

  • 处理由inspect.stack()失败引起的错误(issue 582

  • 修复对不存在的引擎属性(issue 593issue 594)的引用

  • 修复了type()(issue 603)的动态itemclass示例用法

  • 使用lucasdemarchi/codespell修复错误(issue 628

  • 修复SgmlLinkExtractor中attrs参数的默认值为tuple(issue 661

  • 修复站点地图阅读器(issue 676)中的XXE缺陷

  • 修复引擎以支持过滤的启动请求(issue 707

  • 修复没有主机名的网站(issue 745)上的离线中间件案例

  • Testsuite不再需要PIL(issue 585

Scrapy 0.22.2(发布时间:2014-02-14)

Scrapy 0.22.1(发布时间:2014-02-08)

  • localhost666可以在某些情况下解决(commit 2ec2279

  • 测试检查堆叠故障(commit cc3eda3

  • 处理cases.stack()失败(commit 8cb44f9

  • 修复错误的检查对不推荐使用的类的子类化。关闭#581(commit 46d98d6

  • 文档:最终蜘蛛示例(commit 13846de)的4空间缩进

  • 修复HtmlParserLinkExtractor并测试#485合并(commit 368a946

  • BaseSgmlLinkExtractor:修复了当链接具有内部标记(commit b566388)时缺少的空间

  • BaseSgmlLinkExtractor:添加具有内部标记(commit c1cb418)的链接的单元测试

  • BaseSgmlLinkExtractor:修复unknown_endtag(),以便当结束标记与开始标记(commit 7e4d627)匹配时,它仅设置current_link = None

  • 修复Travis-CI构建(commit 76c7e20)的测试

  • 用html实体替换不可编码的代码点。修复#562和#285(commit 5f87b17

  • RegexLinkExtractor:在创建链接时编码URL unicode值(commit d0ee545

  • 使用最新输出更新了教程抓取输出。 (commit 8da65de

  • 使用搜寻器引用更新了shell文档并修复了实际的shell输出。 (commit 875b9ab

  • PEP8次要编辑。 (commit f89efaf

  • 在scrapy shell中暴露当前的crawler。 (commit 5349cec

  • 未使用的重新导入和PEP8次要编辑。 (commit 387f414

  • 使用ItemLoader时忽略无值。 (commit 0632546

  • DOC修复了HTTPCACHE_STORAGE在默认值中的错误,现在是文件系统而不是Dbm。 (commit cde9a8c

  • 将ubuntu设置指令显示为文字代码(commit fb5c9c5

  • 更新Ubuntu安装说明(commit 70fb105

  • 合并来自stray-leone/patch-1(commit 6f70b6a)的拉取请求#550

  • 修改scrapy ubuntu包(commit 725900d)的版本

  • 修复0.22.0发布日期(commit af0219a

  • 在news.rst中修复错误,并删除(尚未发布)头(commit b7f58f4

Scrapy 0.22.0(发布于2014-01-17)

增强

  • [向后不兼容]将HTTPCacheMiddleware后端切换到文件系统(issue 541)要将旧后端设置为 HTTPCACHE_STORAGEscrapy.contrib.httpcache.DbmCacheStorage

  • Proxy https://网址使用CONNECT方法(issue 392issue 397

  • 添加中间件以抓取由google(issue 343)定义的ajax可抓取网页

  • 将scrapy.spider.BaseSpider重命名为scrapy.spider.Spider(issue 510issue 519

  • 选择器默认注册EXSLT命名空间(issue 472

  • 统一类似于选择器重命名(issue 461)的项目加载器

  • 使 RFPDupeFilter 类容易亚类化(issue 533

  • 提高测试覆盖率和即将推出的Python 3支持(issue 525

  • 将设置和中间件的启动信息升级到INFO级别(issue 520

  • 支持partials在 get_func_args util(issue 506,问题:504

  • 允许通过tox(issue 503)运行单独测试

  • 更新链接提取程序(issue 498)忽略的扩展

  • 添加中间件方法以获取文件/图像/缩略图路径(issue 490

  • 改进异地中间件测试(issue 478

  • 添加一种方式跳过由RefererMiddleware(issue 475)设置的默认Referer头

  • 不要在默认 Accept-Encoding 头(issue 469)中发送 x-gzip

  • 支持使用设置(issue 466)定义http错误处理

  • 使用现代python成语,无论你在哪里找到遗产(issue 497

  • 改进和更正文档(issue 527issue 524issue 521issue 517issue 512issue 505issue 502issue 489issue 465issue 460issue 425issue 536

修复

  • 更新选择器类导入CrawlSpider模板(issue 484

  • 修复不存在对 engine.slotsissue 464)的引用

  • 不要尝试在非TextResponse实例(issue 462)上调用 body_as_unicode()

  • 在子类化XPathItemLoader时警告,以前它只在实例化时警告。 (issue 523

  • 当对XPathSelector进行子类化时发出警告,以前它只在实例化时警告。 (issue 537

  • 对内存统计信息的多个修复(issue 531issue 530issue 529

  • 修复 FormRequest.from_response() 中的重写网址(issue 507

  • 修正pip 1.5(issue 513

  • 修复蜘蛛名称为unicode(issue 479)时的日志记录错误

Scrapy 0.20.2(发布于2013-12-09)

Scrapy 0.20.1(发布于2013-11-28)

  • 需要include_package_data从已发布的源(commit 5ba1ad5)构建轮

  • process_parallel在其内部延迟上泄漏故障。关闭#458(commit 419a780

Scrapy 0.20.0(发布于2013-11-08)

增强

  • 新选择器的API包括CSS选择器(issue 395issue 426),

  • 请求/响应url/body属性现在是不可变的(修改它们已经被弃用很长时间了)

  • ITEM_PIPELINES 现在定义为dict(而不是列表)

  • Sitemap蜘蛛可以撷取替代网址(issue 360

  • Selector.remove_namespaces() 现在从元素的属性中删除命名空间。 (issue 416

  • 为Python 3.3+(issue 435issue 436issue 431issue 452)铺平道路

  • 新项目导出器使用本地python类型与嵌套支持(issue 366

  • 调整HTTP1.1池大小,以匹配由设置(commit b43b5f575)定义的并发性,

  • scrapy.mail.MailSender现在可以通过TLS连接或使用STARTTLS(issue 327)进行升级

  • 新的FilesPipeline与ImagesPipeline(issue 370issue 409

  • 推荐枕头代替PIL用于图像处理(issue 317

  • 添加debian包为Ubuntu定量和raring(commit 86230c0

  • Mock服务器(用于测试)可以侦听HTTPS请求(issue 410

  • 从多个核心组件(issue 422issue 421issue 420issue 419issue 423issue 418)中删除多蜘蛛支持,

  • Travis-CI现在针对 w3libqueuelib python软件包的开发版本测试Scrapy更改。

  • 将pypy 2.1添加到连续积分测试(commit ecfa7431

  • Pylinted,pep8和删除旧样式异常(issue 430issue 432

  • 使用importlib进行参数导入(issue 445

  • 处理在Python 2.7.5中引入的影响XmlItemExporter(issue 372)的回归

  • 在SIGINT(issue 450)上修复漏洞关闭

  • 不要在FormRequest.from_response(commit b326b87)中提交 reset 类型输入

  • 当请求errback引发异常(commit 684cfc0)时,不要阻止下载错误

Bug修复

其他

  • Dropped Python 2.6支持(issue 448

  • cssselect python包添加为安装依赖关系

  • 删除libxml2和多选择器的后端支持,从现在起需要 lxml

  • 最小扭曲版本增加到10.0.0,删除了Twisted 8.0支持。

  • 运行测试套件现在需要 mock python库(issue 390

谢谢

感谢为这个版本做出贡献的每个人!

根据提交数量排序的提供者列表:

69 Daniel Graña <dangra@...>
37 Pablo Hoffman <pablo@...>
13 Mikhail Korobov <kmike84@...>
 9 Alex Cepoi <alex.cepoi@...>
 9 alexanderlukanin13 <alexander.lukanin.13@...>
 8 Rolando Espinoza La fuente <darkrho@...>
 8 Lukasz Biedrycki <lukasz.biedrycki@...>
 6 Nicolas Ramirez <nramirez.uy@...>
 3 Paul Tremberth <paul.tremberth@...>
 2 Martin Olveyra <molveyra@...>
 2 Stefan <misc@...>
 2 Rolando Espinoza <darkrho@...>
 2 Loren Davie <loren@...>
 2 irgmedeiros <irgmedeiros@...>
 1 Stefan Koch <taikano@...>
 1 Stefan <cct@...>
 1 scraperdragon <dragon@...>
 1 Kumara Tharmalingam <ktharmal@...>
 1 Francesco Piccinno <stack.box@...>
 1 Marcos Campal <duendex@...>
 1 Dragon Dave <dragon@...>
 1 Capi Etheriel <barraponto@...>
 1 cacovsky <amarquesferraz@...>
 1 Berend Iwema <berend@...>

Scrapy 0.18.4(发布于2013-10-10)

  • IPython拒绝更新命名空间。 fix#396(commit 3d32c4f

  • 修复AlreadyCalledError在shell命令中替换请求。关闭#407(commit b1d8919

  • 修复start_requests惰性和早期挂起(commit 89faf52

Scrapy 0.18.3(发布时间:2013-10-03)

Scrapy 0.18.2(发布时间:2013-09-03)

  • Backport scrapy check 命令修复和向后兼容多搜寻器进程(issue 339

Scrapy 0.18.1(发布于2013-08-27)

Scrapy 0.18.0(发布时间:2013-08-09)

  • 很多改进测试套件运行使用Tox,包括在pypi上测试的方法

  • 处理AJAX可抓取网址(commit 3fe2a32)的GET参数

  • 使用lxml recover选项解析站点地图(issue 347

  • Bugfix cookie通过主机名而不是netloc(issue 352)合并

  • 支持使用标志设置(issue 359)禁用 HttpCompressionMiddleware

  • XMLFeedSpiderissue 12)中使用 iternodes 解析器支持xml命名空间

  • 支持 dont_cache 请求元标记(issue 19

  • Bug修复 scrapy.utils.gz.gunzip 由python 2.7.4(commit 4dc76e)中的更改打破

  • SgmlLinkExtractor 上的修正网址编码(issue 24

  • 修补程序 TakeFirst 处理器不应丢弃零(0)值(issue 59

  • 支持xml导出器(issue 66)中的嵌套项目

  • 提高Cookie处理性能(issue 77

  • 日志重复过滤请求一次(issue 105

  • 将重定向中间件分为状态和基于元的中间件(issue 78

  • 使用HTTP1.1作为默认下载器处理程序(issue 109issue 318

  • 支持在 FormRequest.from_responseissue 185)上的xpath表单选择

  • SgmlLinkExtractor 上的修复Unicode解码错误(issue 199

  • 在pypi解释器(issue 205)上修复信号调度

  • 改进请求延迟和并发处理(issue 206

  • HttpCacheMiddlewareissue 212)添加RFC2616缓存策略

  • 允许自定义引擎记录的消息(issue 214

  • 增加 DjangoItem 的改进(issue 217issue 218issue 221

  • 使用setuptools入口点(issue 260)扩展Scrapy命令

  • 允许设置蜘蛛 allowed_domains 值/元组(issue 261

  • 支持 settings.getdictissue 269

  • 简化内部 scrapy.core.scraper 插槽处理(issue 271

  • 添加 Item.copyissue 290

  • 收集空闲下载器插槽(issue 297

  • 添加 ftp:// 方案下载处理程序(issue 329

  • 添加下载器基准Web服务器和蜘蛛工具 基准

  • 将持久性(磁盘上)队列移动到单独的项目(queuelib),scrapy现在取决于

  • 使用外部库(issue 260)添加scrapy命令

  • scrapy 命令行工具添加了 --pdb 选项

  • 添加了 XPathSelector.remove_namespaces(),允许从XML文档中删除所有命名空间,以方便(使用无命名空间的XPath)。在 选择器 中记录。

  • 蜘蛛合同的几个改进

  • 名为MetaRefreshMiddldeware的新的默认中间件处理元刷新html标记重定向,

  • MetaRefreshMiddldeware和RedirectMiddleware具有不同的优先级到地址#62

  • 将from_crawler方法添加到蜘蛛

  • 使用模拟服务器添加系统测试

  • 更多改进Mac OS兼容性(感谢Alex Cepoi)

  • 几个更多的清理到单身和多蜘蛛的支持(感谢尼古拉斯·拉米雷斯)

  • 支持自定义下载插槽

  • 添加–spider选项为“shell”命令。

  • scrapy启动时记录覆盖设置

感谢所有为这个版本贡献的人。以下是按提交数量排序的提供者列表:

130 Pablo Hoffman <pablo@...>
 97 Daniel Graña <dangra@...>
 20 Nicolás Ramírez <nramirez.uy@...>
 13 Mikhail Korobov <kmike84@...>
 12 Pedro Faustino <pedrobandim@...>
 11 Steven Almeroth <sroth77@...>
  5 Rolando Espinoza La fuente <darkrho@...>
  4 Michal Danilak <mimino.coder@...>
  4 Alex Cepoi <alex.cepoi@...>
  4 Alexandr N Zamaraev (aka tonal) <tonal@...>
  3 paul <paul.tremberth@...>
  3 Martin Olveyra <molveyra@...>
  3 Jordi Llonch <llonchj@...>
  3 arijitchakraborty <myself.arijit@...>
  2 Shane Evans <shane.evans@...>
  2 joehillen <joehillen@...>
  2 Hart <HartSimha@...>
  2 Dan <ellisd23@...>
  1 Zuhao Wan <wanzuhao@...>
  1 whodatninja <blake@...>
  1 vkrest <v.krestiannykov@...>
  1 tpeng <pengtaoo@...>
  1 Tom Mortimer-Jones <tom@...>
  1 Rocio Aramberri <roschegel@...>
  1 Pedro <pedro@...>
  1 notsobad <wangxiaohugg@...>
  1 Natan L <kuyanatan.nlao@...>
  1 Mark Grey <mark.grey@...>
  1 Luan <luanpab@...>
  1 Libor Nenadál <libor.nenadal@...>
  1 Juan M Uys <opyate@...>
  1 Jonas Brunsgaard <jonas.brunsgaard@...>
  1 Ilya Baryshev <baryshev@...>
  1 Hasnain Lakhani <m.hasnain.lakhani@...>
  1 Emanuel Schorsch <emschorsch@...>
  1 Chris Tilden <chris.tilden@...>
  1 Capi Etheriel <barraponto@...>
  1 cacovsky <amarquesferraz@...>
  1 Berend Iwema <berend@...>

Scrapy 0.16.5(发布于2013-05-30)

  • 当scrapy deploy被重定向到新的端点(commit 8c4fcee)时,

  • 修复不准确的下载中间件文档。 refs#280(commit 40667cb

  • doc:删除diveintopython.org的链接,该链接不再可用。关闭#246(commit bd58bfa

  • 查找无效html5文档(commit e3d6945)中的表单节点

  • 修复拼写标签attrs类型bool而不是列表(commit a274276

Scrapy 0.16.4(发布于2013-01-23)

  • 修复文档中的拼写错误(commit 6d2b3aa

  • 添加关于停用扩展程序的文档。 refs#132(commit c90de33

  • 固定的错误消息格式。 log.err()不支持酷格式化,当出现错误时,消息是:“ERROR:Error processing%(item)s”(commit c16150c

  • lint和改进图像管道错误日志记录(commit 56b45fc

  • 固定文档打字错误(commit 243be84

  • 添加文档主题:广泛抓取和通用实践(commit 1fbb715

  • 当没有明确指定spider时修复scrapy parse命令中的错误。关闭#209(commit c72e682

  • 更新docs/topics/commands.rst(commit 28eac7a

Scrapy 0.16.3(发布2012-12-07)

Scrapy 0.16.2(发布于2012-11-09)

Scrapy 0.16.1(发布2012-10-26)

  • 固定的LogStats扩展,在0.16版本(commit 8c780fd)之后的错误合并后崩溃,

  • 更好的向后兼容性scrapy.conf.settings(commit 3403089

  • 关于如何从扩展(commit c4da0b5)访问爬网程序统计信息的扩展文档

  • 删除.hgtags(现在不再需要scrapy使用git)(commit d52c188

  • 修复rst标题下的破折号(commit fa4f7f9

  • 设置发布日期为0.16.0的新闻(commit e292246

Scrapy 0.16.0(发布2012-10-18)

Scrapy更改:

  • 添加 蜘蛛合同,一种以正式/可重现的方式测试蜘蛛的机制

  • 添加选项 -o-trunspider 命令

  • 记录 AutoThrottle扩展 并添加到默认安装的扩展。您仍然需要使用 AUTOTHROTTLE_ENABLED 启用它

  • 主要统计数据集重构:删除全局/每个蜘蛛统计信息的分离,删除统计信息(stats_spider_opened 等)。 Stats现在更简单,向下兼容性保持在Stats Collector API和信号。

  • 添加 process_start_requests() 方法到蜘蛛中间件

  • 丢弃信号单例。现在应该通过Crawler.signals属性访问信号。有关详细信息,请参阅信号文档。

  • 丢弃信号单例。现在应该通过Crawler.signals属性访问信号。有关详细信息,请参阅信号文档。

  • 丢弃Stats Collector单例。现在可以通过Crawler.stats属性访问统计信息。有关详细信息,请参阅统计信息收集文档。

  • 记录 核心API

  • lxml 现在是默认选择器后端而不是 libxml2

  • 移植FormRequest.from_response()以使用 lxml 而不是 ClientForm

  • 删除模块:scrapy.xlib.BeautifulSoupscrapy.xlib.ClientForm

  • SitemapSpider:添加了对以.xml和.xml.gz结尾的站点地图网址的支持,即使他们宣传错误的内容类型(commit 10ed28b

  • StackTraceDump扩展:也dump dumpref实时引用(commit fe2ce93

  • 现在在JSON和JSONLines导出器中完全支持嵌套项

  • 添加 cookiejar 请求元键以支持每个蜘蛛的多个cookie会话

  • 去耦编码检测代码到 w3lib.encoding,以及移植Scrapy代码以使用该模块

  • 放弃对Python 2.5的支持。见 https://blog.scrapinghub.com/2012/02/27/scrapy-0-15-dropping-support-for-python-2-5/

  • 下降对Twisted 2.5的支持

  • 添加 REFERER_ENABLED 设置,以控制引用中间件

  • 将默认用户代理更改为:Scrapy/VERSION (+http://scrapy.org)

  • scrapy.contrib.linkextractors.image 删除(未记录) HTMLImageLinkExtractor

  • 已删除的每个蜘蛛设置(要通过实例化多个搜寻器对象来替换)

  • USER_AGENT spider属性将不再工作,请改用 user_agent 属性

  • DOWNLOAD_TIMEOUT spider属性将不再工作,请改用 download_timeout 属性

  • 删除 ENCODING_ALIASES 设置,因为编码自动检测已移至 w3lib

  • 促进 DjangoItem 主要贡献

  • LogFormatter方法现在返回dicts(而不是字符串)以支持延迟格式化(issue 164commit dcef7b0

  • 下载器处理程序(DOWNLOAD_HANDLERS 设置)现在接收设置作为构造函数的第一个参数

  • 用更便携的 resource 模块替换内存使用情况记帐,删除 scrapy.utils.memory 模块

  • 去除信号:scrapy.mail.mail_sent

  • 删除 TRACK_REFS 设置,现在 trackrefs 始终启用

  • DBM现在是HTTP缓存中间件的默认存储后端

  • 现在通过Scrapy stats(统计名称:log_count/LEVEL)跟踪日志消息数(每级)

  • 现在已经收到一些回应是通过Scrapy统计追踪(统计名称:response_received_count

  • 删除 scrapy.log.started 属性

Scrapy 0.14.4

Scrapy 0.14.3

  • 忘记包括pydispatch许可证。 #118(commit fd85f9c

  • 包括测试库在源代码分发中使用的egg文件。 #118(commit c897793

  • 更新docstring项目模板,以避免与genspider命令混淆,这可以被视为一个高级功能。 refs#107(commit 2548dcc

  • 添加注释到docs/topics/firebug.rst关于google目录正在关闭(commit 668e352

  • 当空时不丢弃插槽,只是保存在另一个dict为了回收如果需要再次。 (commit 8e9f607

  • 不要在libxml2支持的选择器(commit b830e95)中处理unicode xpaths,

  • 请求对象文档(commit bf3c9ee)中的固定小错误

  • 链接提取器文档中的固定小缺陷(commit ba14f38

  • 删除一些过时的剩余代码相关的sqlite支持scrapy(commit 0665175

Scrapy 0.14.2

Scrapy 0.14.1

Scrapy 0.14

新功能和设置

  • 支持 AJAX crawleable urls

  • 新的持久性调度器,用于在磁盘上存储请求,允许挂起和恢复爬网(r2737

  • 添加了 -o 选项到 scrapy crawl,一个将剪贴项目转储到文件(或使用 - 的标准输出)的快捷方式,

  • 添加了将自定义设置传递到Scrapyd schedule.json api(r2779r2783

  • 新的 ChunkedTransferMiddleware (默认启用)支持 chunked transfer encodingr2769

  • 添加boto 2.0支持S3下载处理程序(r2763

  • marshal 添加到饲料出口支持的格式(r2744

  • 在请求errbacks中,违规请求现在在 failure.request 属性(r2738)中被接收,

  • 大下载重构支持每个域/ip并发限制(r2732
  • 添加内置缓存DNS解析器(r2728

  • 将Amazon AWS相关组件/扩展(SQS蜘蛛队列,SimpleDB stats收集器)移动到单独的项目:[scaws](https://github.com/scrapinghub/scaws)(r2706r2714

  • 将蜘蛛队列移动到scrapyd:scrapy.spiderqueue - > scrapyd.spiderqueuer2708

  • 将sqlite工具移动到scrapyd:scrapy.utils.sqlite - > scrapyd.sqliter2781

  • 真正支持在 start_requests() 方法上返回迭代器。迭代器现在在爬取期间当蜘蛛变得空闲(r2704)时消耗,

  • 添加了 REDIRECT_ENABLED 设置以快速启用/禁用重定向中间件(r2697

  • 添加了 RETRY_ENABLED 设置以快速启用/禁用重试中间件(r2694

  • 添加了 CloseSpider 异常手动关闭蜘蛛(r2691

  • 通过添加对HTML5元字符集声明(r2690)的支持改进了编码检测

  • 重构的近蜘蛛行为等待所有下载完成并由蜘蛛处理,在关闭蜘蛛(r2688

  • 添加了 SitemapSpider (请参阅Spiders页中的文档)(r2658

  • 添加了 LogStats 扩展,用于定期记录基本统计信息(如爬行页面和已抓取项目)(r2657

  • 使处理gzipped响应更加强大(#319,r2643)。现在Scrapy将尝试和解压缩尽可能从gzipped响应,而不是失败与 IOError

  • 简化!MemoryDebugger扩展使用stats转储内存调试信息(r2639

  • 添加了新命令编辑蜘蛛程序:scrapy editr2636)和 -e 标志到使用它的 genspider 命令(r2653

  • 将项目的默认表示更改为漂亮打印的项目。 (r2631)。这通过使日志在默认情况下更易于阅读来改进默认日志记录,对于已删除和已删除行。

  • 添加 spider_error 信号(r2628

  • 添加了 COOKIES_ENABLED 设置(r2625

  • 统计数据现在转储到Scrapy日志(STATS_DUMP 设置的默认值已更改为 True)。这是为了使Scrapy用户更加了解Scrapy统计数据和那里收集的数据。

  • 增加了对动态调整下载延迟和最大并发请求(r2599

  • 添加了新的DBM HTTP缓存存储后端(r2576

  • 向Scrapyd添加了 listjobs.json API(r2571

  • CsvItemExporter:添加的 join_multivalued 参数(r2578

  • xmliter_lxmlr2552)添加了命名空间支持

  • 改进的cookie中间件通过使 COOKIES_DEBUG 更好和记录它(r2579

  • Scrapyd和Link提取器的几个改进

代码重新排列和删除

  • 合并的项目传递和项目刮削的概念,因为它们经常被证明在过去是混乱的。这意味着:(r2630
    • 原始item_scraped信号已删除

    • 原始item_passed信号已重命名为item_scraped

    • 旧日志行 Scraped Item... 被删除

    • 旧日志行 Passed Item... 更名为 Scraped Item... 行并降级为 DEBUG 级别

  • 通过将Scrapy代码的一部分分成两个新库来减少Scrapy代码库:
    • w3libscrapy.utils.{http,markup,multipart,response,url} 的几个功能,在 r2584 中完成)

    • scrapely (是 scrapy.contrib.ibl,在 r2586 中完成)

  • 删除未使用的功能:scrapy.utils.request.request_info()r2577

  • examples/googledir 删除了googledir项目。现在有一个名为 dirbot 的新示例项目可以在github上获得:https://github.com/scrapy/dirbot

  • 已删除对Scrapy项目(r2616)中的默认字段值的支持

  • 删除了实验性crawlspider v2(r2632

  • 删除调度程序中间件以简化架构。复制过滤器现在在调度程序本身完成,使用与以前相同的复制类(DUPEFILTER_CLASS 设置)(r2640

  • 删除了对 scrapy crawl 命令传递URL的支持(使用 scrapy parse)(r2704

  • 已移除已弃用的执行伫列(r2704

  • 删除(无证件)蜘蛛上下文扩展(从scrapy.contrib.spidercontext)(r2780

  • 删除 CONCURRENT_SPIDERS 设置(改用scrapyd maxproc)(r2789

  • 重命名核心组件的属性:downloader.sites - > downloader.slots,scraper.sites - > scraper.slots(r2717r2718

  • CLOSESPIDER_ITEMPASSED 重命名为 CLOSESPIDER_ITEMCOUNTr2655)。保持向后兼容性。

Scrapy 0.12

像旧的问题跟踪器(Trac)中的#NNN参考票证的数字不再可用。

新功能和改进

  • 传递项目现在在 item_passeditem 参数中发送(#273)

  • 添加verbose选项到 scrapy version 命令,对错误报告有用(#298)

  • HTTP缓存现在默认存储在项目数据dir(#279)

  • 添加项目数据存储目录(#276,#277)

  • Scrapy项目的文档化文件结构(请参阅命令行工具文档)

  • 用于XPath选择器的新lxml后端(#147)

  • 每蜘蛛设置(#245)

  • 支持退出代码以指示Scrapy命令中的错误(#248)

  • scrapy shell 命令添加了 -c 参数

  • libxml2 可选(#260)

  • deploy 命令(#261)

  • 添加了 CLOSESPIDER_PAGECOUNT 设置(#253)

  • 添加 CLOSESPIDER_ERRORCOUNT 设置(#254)

Scrapyd更改

  • Scrapyd现在每个蜘蛛使用一个进程

  • 它每个蜘蛛程序存储一个日志文件,并旋转它们保持每个蜘蛛最新的5个日志(默认情况下)

  • 添加了一个最小的web ui,默认情况下在 http://localhost:6800 可用

  • 现在有一个 scrapy server 命令来启动当前项目的Scrapyd服务器

对设置的更改

  • 添加 HTTPCACHE_ENABLED 设置(默认为False)以启用HTTP缓存中间件

  • 改变 HTTPCACHE_EXPIRATION_SECS 语义:现在零意味着“永不过期”。

已弃用/已过时的功能

  • 已弃用的 runserver 命令优先于启动Scrapyd服务器的 server 命令。参见:Scrapyd更改

  • 已弃用的 queue 命令支持使用Scrapyd schedule.json API。参见:Scrapyd更改

  • 删除!LxmlItemLoader(实验contrib,从来没有毕业到主contrib)

Scrapy 0.10

像旧的问题跟踪器(Trac)中的#NNN参考票证的数字不再可用。

新功能和改进

  • 新的Scrapy服务称为 scrapyd,用于在生产环境中部署Scrapy爬网程序(#218)(可用文档)

  • 简化图像流水线使用,现在不需要子类化您自己的图像流水线(#217)

  • Scrapy shell现在默认显示Scrapy日志(#206)

  • 在公共基本代码中重构的执行队列以及称为“蜘蛛队列”的可插拔后端(#220)

  • 新的持久性蜘蛛队列(基于SQLite)(#198),默认情况下可用,它允许在服务器模式下启动Scrapy,然后计划蜘蛛程序运行。

  • 添加了Scrapy命令行工具及其所有可用的子命令的文档。 (可用文档)

  • 具有可插拔后端的Feed出口商(#197)(可用文档)

  • 延迟信号(#193)

  • 添加了两个新的方法到项目管道open_spider(),close_spider()与延迟支持(#195)

  • 支持每个蜘蛛覆盖默认请求标头(#181)

  • 替换默认的Spider Manager具有类似功能,但不依赖于Twisted插件(#186)

  • Splitted Debian包分成两个包 - 库和服务(#187)

  • Scrapy日志重构(#188)

  • 用于在不同运行中保持持久性蜘蛛上下文的新扩展(#203)

  • 添加了用于避免重定向的 dont_redirect request.meta键(#233)

  • 添加了 dont_retry request.meta键以避免重试(#234)

命令行工具更改

  • 新的 scrapy 命令替换旧的 scrapy-ctl.py (#199) - 现在只有一个全局 scrapy 命令,而不是每个项目一个 scrapy-ctl.py - 添加 scrapy.bat 脚本从Windows更方便地运行

  • 添加了bash completion到命令行工具(#210)

  • 将命令 start 重命名为 runserver (#209)

API更改

  • Request对象的 urlbody 属性现在是只读的(#230)

  • Request.copy()Request.replace() 现在也复制其 callbackerrback 属性(#231)

  • scrapy.contrib 中删除了 UrlFilterMiddleware (默认情况下已禁用)

  • 异地middelware不过滤来自没有allowed_domains属性的蜘蛛的任何请求(#225)

  • 删除了Spider Manager load() 方法。现在蜘蛛被加载在构造函数本身。

  • 对Scrapy管理器(现在称为“抓取工具”)的更改:
    • scrapy.core.manager.ScrapyManager 类重命名为 scrapy.crawler.Crawler

    • scrapy.core.manager.scrapymanager 单例移动到 scrapy.project.crawler

  • 移动模块:scrapy.contrib.spidermanagerscrapy.spidermanager

  • Spider Manager单身人士从 scrapy.spider.spiders 移至 spiders` attribute of ``scrapy.project.crawler 单身人士。

  • 移动Stats收集器类:(#204)
    • scrapy.stats.collector.StatsCollectorscrapy.statscol.StatsCollector

    • scrapy.stats.collector.SimpledbStatsCollectorscrapy.contrib.statscol.SimpledbStatsCollector

  • 默认的每命令设置现在在命令对象类(#201)的 default_settings 属性中指定,

  • 将项目管道 process_item() 方法的参数从 (spider, item) 更改为 (item, spider)
    • 保留向后兼容性(带弃用警告)

  • scrapy.core.signals 模块移动到 scrapy.signals
    • 保留向后兼容性(带弃用警告)

  • scrapy.core.exceptions 模块移动到 scrapy.exceptions
    • 保留向后兼容性(带弃用警告)

  • 添加 handles_request() 类方法到 BaseSpider

  • 丢弃 scrapy.log.exc() 功能(使用 scrapy.log.err()

  • 删除 scrapy.log.msg() 函数的 component 参数

  • 删除 scrapy.log.log_level 属性

  • 向Spider Manager和项目管道管理器添加了 from_settings() 类方法

对设置的更改

  • 添加了 HTTPCACHE_IGNORE_SCHEMES 设置忽略某些方案!HttpCacheMiddleware(#225)

  • 添加了定义要使用的蜘蛛队列的 SPIDER_QUEUE_CLASS 设置(#220)

  • 添加 KEEP_ALIVE 设置(#220)

  • 已删除 SERVICE_QUEUE 设置(#220)

  • 已删除 COMMANDS_SETTINGS_MODULE 设置(#201)

  • REQUEST_HANDLERS 重命名为 DOWNLOAD_HANDLERS 并创建下载处理程序类(而不是函数)

Scrapy 0.9

像旧的问题跟踪器(Trac)中的#NNN参考票证的数字不再可用。

新功能和改进

  • 向scrapy.mail添加了SMTP-AUTH支持

  • 添加了新设置:MAIL_USERMAIL_PASSr2065 | #149)

  • 添加了新的scrapy-ctl视图命令 - 要在浏览器中查看URL,如Scrapy(r2039

  • 添加了用于控制Scrapy进程的Web服务(这也会废弃Web控制台)(r2053 | #167)

  • 支持运行Scrapy服务,用于生产系统(r1988r2054r2055r2056r2057 | #168)

  • 添加了包装诱导库(文档只在源代码中可用)。 (r2011

  • 简化和改进的响应编码支持(r1961r1969

  • 添加了 LOG_ENCODING 设置(r1956,可用文档)

  • 添加了 RANDOMIZE_DOWNLOAD_DELAY 设置(默认启用)(r1923,doc可用)

  • MailSender 不再是IO阻塞(r1955 | #146)

  • 链接提取器和新的Crawlspider现在处理相对基本标记网址(r1960 | #148)

  • 项目加载器和处理器(r2022r2023r2024r2025r2026r2027r2028r2029r2030

  • 添加了对telnet控制台添加变量的支持(r2047 | #165)

  • 支持没有回调的请求(r2050 | #166)

API更改

  • Spider.domain_name 更改为 Spider.name (SEP-012,r1975

  • Response.encoding 现在是检测到的编码(r1961

  • HttpErrorMiddleware 现在返回None或引发异常(r2006 | #157)

  • scrapy.command 模块重定位(r2035r2036r2037

  • 添加 ExecutionQueue 用于饲喂蜘蛛(r2034

  • 删除 ExecutionEngine 单身人士(r2039

  • 移植 S3ImagesStore (图像管道)使用boto和线程(r2033

  • 移动模块:scrapy.management.telnetscrapy.telnetr2047

更改为默认设置

  • 将默认 SCHEDULER_ORDER 更改为 DFOr1939

Scrapy 0.8

像旧的问题跟踪器(Trac)中的#NNN参考票证的数字不再可用。

新功能

  • 添加了DEFAULT_RESPONSE_ENCODING设置(r1809

  • 添加 dont_click 参数到 FormRequest.from_response() 方法(r1813r1816

  • 添加 clickdata 参数到 FormRequest.from_response() 方法(r1802r1803

  • 添加了对HTTP代理(HttpProxyMiddleware)(r1781r1785)的支持

  • 现场蜘蛛中间件现在在过滤请求时记录消息(r1841

向后不兼容的更改

  • 更改 scrapy.utils.response.get_meta_refresh() 签名(r1804

  • 删除已弃用的 scrapy.item.ScrapedItem 类 - 使用 scrapy.item.Item insteadr1838

  • 删除已弃用的 scrapy.xpath 模块 - 改用 scrapy.selector。 (r1836

  • 删除已弃用的 core.signals.domain_open 信号 - 改用 core.signals.domain_openedr1822

  • log.msg() 现在接收 spider 自变量(r1822
    • 旧域参数已被弃用,将在0.9中删除。对于蜘蛛程序,应始终使用 spider 参数并传递spider引用。如果你真的想传递一个字符串,使用 component 参数。

  • 改变的核心信号 domain_openeddomain_closeddomain_idle

  • 更改项目管道以使用蜘蛛代替域
    • process_item() 项目管道方法的 domain 参数更改为 spider,新签名为:process_item(spider, item)r1827 | #105)

    • 要快速移植您的代码(使用Scrapy 0.8)只需使用您以前使用 domainspider.domain_name

  • 更改统计信息API以使用蜘蛛代替域(r1849 | #113)
    • StatsCollector 更改为在其方法(set_valueinc_value 等)中接收蜘蛛引用(而不是域)。

    • 添加 StatsCollector.iter_spider_stats() 方法

    • 删除 StatsCollector.list_domains() 方法

    • 此外,Stats信号被重命名,现在绕过蜘蛛引用(而不是域)。以下是变更摘要:

    • 要快速移植您的代码(使用Scrapy 0.8)只需使用您以前使用 domainspider.domain_namespider_stats 包含与 domain_stats 完全相同的数据。

  • CloseDomain 扩展名移到 scrapy.contrib.closespider.CloseSpiderr1833
    • 它的设置也被重命名:
      • CLOSEDOMAIN_TIMEOUTCLOSESPIDER_TIMEOUT

      • CLOSEDOMAIN_ITEMCOUNTCLOSESPIDER_ITEMCOUNT

  • 删除已弃用的 SCRAPYSETTINGS_MODULE 环境变量 - 改用 SCRAPY_SETTINGS_MODULEr1840

  • 重命名设置:REQUESTS_PER_DOMAINCONCURRENT_REQUESTS_PER_SPIDERr1830r1844

  • 重命名设置:CONCURRENT_DOMAINSCONCURRENT_SPIDERSr1830

  • 重构HTTP缓存中间件

  • HTTP缓存中间件已经被重构重构,保留了除了被删除的域扇区化之外的相同功能。 (r1843

  • 重命名异常:DontCloseDomainDontCloseSpiderr1859 | #120)

  • 重命名扩展名:DelayedCloseDomainSpiderCloseDelayr1861 | #121)

  • 删除过时的 scrapy.utils.markup.remove_escape_chars 功能 - 使用 scrapy.utils.markup.replace_escape_charsr1865

Scrapy 0.7

第一版的Scrapy。