Scrapy – 发行说明

刮痧2.3.0(2020-08-04)¶

亮点:

  • Feed exports 现在支持 Google Cloud Storage 作为存储后端

  • 新的 FEED_EXPORT_BATCH_ITEM_COUNT 设置允许批量传递输出项,最多可达指定的项数。

    它还可以作为 delayed file delivery ,这会导致Scrapy在使用某些存储后端时仅在爬网完成后才开始项目传递 (S3FTP ,现在呢 GCS

  • 基本实现 item loaders 已经搬进了一个单独的类库, itemloaders ,允许从外部使用Scrapy和单独的发布时间表

折旧清除¶

  • 从中删除了以下类及其父模块 scrapy.linkextractors

    • htmlparser.HtmlParserLinkExtractor

    • regex.RegexLinkExtractor

    • sgml.BaseSgmlLinkExtractor

    • sgml.SgmlLinkExtractor

    使用 LinkExtractor 相反 (issue 4356 , issue 4679 )

贬抑¶

  • 这个 scrapy.utils.python.retry_on_eintr 函数现在已弃用 (issue 4683 )

新特点¶

  • Feed exports support Google Cloud
    Storage
    (issue 685, issue 3608)

  • 新的 FEED_EXPORT_BATCH_ITEM_COUNT 批量交货设置 (issue 4250 , issue 4434 )

  • 这个 parse 命令现在允许指定输出文件 (issue 4317 , issue 4377 )

  • Request.from_curl and
    curl_to_request_kwargs() now also support
    --data-raw (issue 4612)

  • A parse callback may now be used in built-in spider subclasses, such
    as CrawlSpider (issue 712, issue 732,
    issue 781, issue 4254 )

错误修复¶

  • Fixed the CSV exporting of
    dataclass items and attr.s items (issue 4667, issue 4668)

  • Request.from_curlcurl_to_request_kwargs() 现在将request方法设置为 POST 当指定了请求正文而未指定请求方法时 (issue 4612 )

  • 在Windows10.0.14393及更高版本中启用了ANSI转义序列的处理,其中彩色输出需要它 (issue 4393 , issue 4403 )

文档¶

  • 更新了 OpenSSL cipher list format 文档中有关 DOWNLOADER_CLIENT_TLS_CIPHERS 设置 (issue 4653 )

  • Simplified the code example in 使用dataclass项
    (issue 4652)

质量保证¶

  • The base implementation of item loaders has been
    moved into itemloaders (issue 4005,
    issue 4516)

  • 修复了某些调度程序中的错误 (issue 4644 , issue 4645 )

  • 已续订用于SSL测试的本地主机证书 (issue 4650 )

  • 删除了python2特有的cookie处理代码 (issue 4682 )

  • 停止使用Python2 unicode文本语法 (issue 4704 )

  • 停止使用齿隙来继续生产线 (issue 4673 )

  • 从MyPy异常列表中删除了不需要的条目 (issue 4690 )

  • 自动化测试现在作为我们持续集成系统的一部分在Windows上传递 (issue 4458 )

  • 自动化测试现在通过最新的PyPy版本来获得我们的持续集成系统中支持的Python版本 (issue 4504 )

2.2.1(2020-07-17)¶

  • 这个 startproject 命令不再对目标文件夹中文件的权限进行意外更改,例如删除执行权限 (issue 4662 , issue 4666 )

刮痧2.2.0(2020-06-24)¶

亮点:

  • 现在需要Python3.5.2+

  • dataclass objects and
    attrs objects are now valid item types

  • 新的 TextResponse.json 方法

  • 新的 bytes_received 允许取消响应下载的信号

  • CookiesMiddleware 修正

向后不兼容的更改¶

  • Support for Python 3.5.0 and 3.5.1 has been dropped; Scrapy now refuses to
    run with a Python version lower than 3.5.2, which introduced
    typing.Type (issue 4615)

贬抑¶

  • TextResponse.body_as_unicode 现在已弃用,请使用 TextResponse.text 相反 (issue 4546 , issue 4555 , issue 4579 )

  • scrapy.item.BaseItem 现在已弃用,请使用 scrapy.item.Item 相反 (issue 4534 )

新特点¶

  • dataclass objects and
    attrs objects are now valid item types, and a new itemadapter library makes it easy to
    write code that supports any item type
    (issue 2749, issue 2807, issue 3761, issue 3881, issue 4642)

  • 一个新的 TextResponse.json 方法允许反序列化JSON响应 (issue 2444 , issue 4460 , issue 4574 )

  • A new bytes_received signal allows monitoring response download
    progress and stopping downloads
    (issue 4205, issue 4559)

  • 的结果列表中的词典 media pipeline 现在包括一个新的密钥, status ,指示文件是否已下载,如果未下载,则说明未下载的原因;请参阅 FilesPipeline.get_media_requests 更多信息 (issue 2893 , issue 4486 )

  • 使用时 Google Cloud Storage 对于一个 media pipeline ,如果配置的凭据没有授予所需的权限,则现在会记录一个警告 (issue 4346 , issue 4508 )

  • Link extractors are now serializable,
    as long as you do not use lambdas for parameters; for
    example, you can now pass link extractors in Request.cb_kwargs or
    Request.meta when persisting
    scheduled requests
    (issue 4554)

  • 升级了 pickle protocol 从协议2到协议4的Scrapy使用,提高了序列化能力和性能 (issue 4135 , issue 4541 )

  • scrapy.utils.misc.create_instance() now raises a TypeError
    exception if the resulting instance is None (issue 4528,
    issue 4532)

错误修复¶

  • CookiesMiddleware no longer
    discards cookies defined in Request.headers (issue 1992, issue 2400)

  • CookiesMiddleware no longer
    re-encodes cookies defined as bytes in the cookies parameter
    of the __init__ method of Request
    (issue 2400, issue 3575)

  • 什么时候? FEEDS 定义多个uri, FEED_STORE_EMPTYFalse 爬网不会产生任何项目,Scrapy在第一个URI之后不再停止feed导出 (issue 4621 , issue 4626 )

  • Spider callbacks defined using coroutine
    syntax
    no longer need to return an iterable, and may
    instead return a Request object, an
    item, or None (issue 4609)

  • 这个 startproject 命令现在确保生成的项目文件夹和文件具有正确的权限 (issue 4604 )

  • Fix a KeyError exception being sometimes raised from
    scrapy.utils.datatypes.LocalWeakReferencedCache (issue 4597,
    issue 4599)

  • 什么时候? FEEDS 定义了多个uri,关于正在存储的项的日志消息现在包含来自相应提要的信息,而不是总是只包含一个提要的信息 (issue 4619 , issue 4629 )

文档¶

  • Added a new section about accessing cb_kwargs from errbacks (issue 4598, issue 4634)

  • Covered chompjs in 分析javascript代码 (issue 4556,
    issue 4562)

  • 从中删除 协同程序 关于API正在试验的警告 (issue 4511 , issue 4513 )

  • Removed references to unsupported versions of Twisted (issue 4533)

  • Updated the description of the screenshot pipeline example, which now uses coroutine syntax instead of returning a
    Deferred (issue 4514, issue 4593)

  • 从中删除了一个误导性的导入行 scrapy.utils.log.configure_logging() 代码示例 (issue 4510 , issue 4587 )

  • The display-on-hover behavior of internal documentation references now also
    covers links to commands, Request.meta keys, settings and
    signals (issue 4495, issue 4563)

  • 再次可以下载文档进行脱机阅读 (issue 4578 , issue 4585 )

  • 删除前面的反斜杠 *args**kwargs 在某些函数和方法签名中 (issue 4592 , issue 4596 )

质量保证¶

  • Adjusted the code base further to our style guidelines (issue 4237, issue 4525, issue 4538,
    issue 4539, issue 4540, issue 4542, issue 4543, issue 4544,
    issue 4545, issue 4557, issue 4558, issue 4566, issue 4568,
    issue 4572)

  • 删除了Python2支持的残余部分 (issue 4550 , issue 4553 , issue 4568 )

  • 改进了 crawlrunspider 命令 (issue 4548 , issue 4552 )

  • Replaced chain(*iterable) with chain.from_iterable(iterable)
    (issue 4635)

  • 您现在可以运行 asyncio 在任何Python版本上使用Tox进行测试 (issue 4521 )

  • 更新测试要求,以反映与pytest 5.4和5.4.1的不兼容性 (issue 4588 )

  • 改进 SpiderLoader 测试包含重复蜘蛛名称的场景的覆盖率 (issue 4549 , issue 4560 )

  • 将Travis CI配置为也使用python3.5.2运行测试 (issue 4518 , issue 4615 )

  • 增加了一个 Pylint 特拉维斯·CI的工作 (issue 3727 )

  • 增加了一个 Mypy 特拉维斯·CI的工作 (issue 4637 )

  • 在测试中使用集合字面值 (issue 4573 )

  • 已清理Travis CI配置 (issue 4517 , issue 4519 , issue 4522 , issue 4537 )

刮痧2.1.0(2020-04-24)¶

亮点:

  • 新的 FEEDS 设置导出到多个源

  • 新的 Response.ip_address 属性

向后不兼容的更改¶

  • AssertionError 引发异常的原因 assert 语句已被新的异常类型取代,以支持在优化模式下运行Python(请参见 -O )不会以任何意想不到的方式改变斯帕蒂的行为。

    如果你抓住一个 AssertionError 来自Scrapy的异常,更新您的代码以捕获相应的新异常。

    (issue 4440 )

折旧清除¶

  • 这个 LOG_UNSERIALIZABLE_REQUESTS 设置不再受支持,请使用 SCHEDULER_DEBUG 相反 (issue 4385 )

  • 这个 REDIRECT_MAX_METAREFRESH_DELAY 设置不再受支持,请使用 METAREFRESH_MAXDELAY 相反 (issue 4385 )

  • 这个 ChunkedTransferMiddleware 中间件已被删除,包括整个 scrapy.downloadermiddlewares.chunked 模块;分块传输是开箱即用的 (issue 4431 )

  • 这个 spiders 属性已从中删除 Crawler 使用 CrawlerRunner.spider_loader 或实例化 SPIDER_LOADER_CLASS 用你的设置代替 (issue 4398 )

  • The MultiValueDict, MultiValueDictKeyError, and SiteNode
    classes have been removed from scrapy.utils.datatypes
    (issue 4400)

贬抑¶

  • 这个 FEED_FORMATFEED_URI 设置已被弃用,取而代之的是 FEEDS 设置 (issue 1336 , issue 3858 , issue 4507 )

新特点¶

  • 一个新的环境, FEEDS ,允许配置具有不同设置的多个输出源 (issue 1336 , issue 3858 , issue 4507 )

  • 这个 crawlrunspider 命令现在支持多个 -o 参数 (issue 1336 , issue 3858 , issue 4507 )

  • 这个 crawlrunspider 命令现在支持通过附加 :<format> 到输出文件 (issue 1336 , issue 3858 , issue 4507 )

  • 新的 Response.ip_address 属性提供对发起响应的IP地址的访问 (issue 3903 , issue 3940 )

  • allowed_domains 包括一个端口 (issue 50 , issue 3198 , issue 4413 )

  • Zsh completion现在将使用的选项别名从完成列表中排除 (issue 4438 )

错误修复¶

  • Request serialization 不再中断为spider属性的回调,这些属性被分配了一个不同名称的函数 (issue 4500 )

  • None 价值观 allowed_domains 不再引起 TypeError 例外 (issue 4410 )

  • Zsh完成不再允许参数后的选项 (issue 4438 )

  • zope.接口现在支持5.0.0和更高版本 (issue 4447 , issue 4448 )

  • Spider.make_requests_from_url ,已在Scrapy 1.4.0中弃用,现在在使用时发出警告 (issue 4412 )

文档¶

  • Improved the documentation about signals that allow their handlers to
    return a Deferred (issue 4295,
    issue 4390)

  • 我们的PyPI条目现在包含了文档、源代码存储库和问题跟踪程序的链接 (issue 4456 )

  • 覆盖了 curl2scrapy 文件中的服务 (issue 4206 , issue 4455 )

  • 删除了对Guppy库的引用,该库只在python2中工作 (issue 4285 , issue 4343 )

  • 扩展使用InterSphinx链接到python3文档 (issue 4444 , issue 4445 )

  • 增加了对Sphinx3.0及更高版本的支持 (issue 4475 , issue 4480 , issue 4496 , issue 4503 )

质量保证¶

  • 删除了有关使用旧的已删除设置的警告 (issue 4404 )

  • 删除了有关导入的警告 StringTransporttwisted.test.proto_helpers 在Twisted 19.7.0或更新版本中 (issue 4409 )

  • 删除了过时的Debian包生成文件 (issue 4384 )

  • 远离的 object 作为基类使用 (issue 4430 )

  • 删除了添加了对我们不再支持的Twisted旧版本的支持的代码 (issue 4472 )

  • 修复了代码样式问题 (issue 4468 , issue 4469 , issue 4471 , issue 4481 )

  • 远离的 twisted.internet.defer.returnValue() 电话 (issue 4443 , issue 4446 , issue 4489 )

刮痧2.0.1(2020-03-18)¶

  • Response.follow_all 现在支持一个空的URL iterable作为输入 (issue 4408 , issue 4420 )

  • Removed top-level reactor imports to prevent
    errors about the wrong Twisted reactor being installed when setting a
    different Twisted reactor using TWISTED_REACTOR (issue 4401,
    issue 4406)

  • 固定测试 (issue 4422 )

刮痧2.0.0(2020-03-03)¶

亮点:

  • Python2支持已被删除

  • Partial coroutine syntax 支持和 experimental asyncio 支持

  • 新的 Response.follow_all 方法

  • FTP support 对于介质管道

  • 新的 Response.certificate 属性

  • IPv6支持通过 DNS_RESOLVER

向后不兼容的更改¶

  • Python 2 support has been removed, following Python 2 end-of-life on
    January 1, 2020 (issue 4091, issue 4114, issue 4115,
    issue 4121, issue 4138, issue 4231, issue 4242, issue 4304,
    issue 4309, issue 4373)

  • 重试gaveups(请参阅 RETRY_TIMES )现在记录为错误而不是调试信息 (issue 3171 , issue 3566 )

  • File extensions that
    LinkExtractor
    ignores by default now also include 7z, 7zip, apk, bz2,
    cdr, dmg, ico, iso, tar, tar.gz, webm, and
    xz (issue 1837, issue 2067, issue 4066)

  • 这个 METAREFRESH_IGNORE_TAGS 设置现在默认为空列表,遵循web浏览器行为 (issue 3844 , issue 4311 )

  • 这个 HttpCompressionMiddleware 现在在值中包含逗号后的空格 Accept-Encoding 它设置的标头,遵循web浏览器行为 (issue 4293 )

  • 这个 __init__ 自定义下载处理程序的方法(请参见 DOWNLOAD_HANDLERS )或以下下载程序处理程序的子类不再接收 settings 参数:

    • scrapy.core.downloader.handlers.datauri.DataURIDownloadHandler

    • scrapy.core.downloader.handlers.file.FileDownloadHandler

    使用 from_settingsfrom_crawler 类方法将此类参数公开给自定义下载处理程序。

    (issue 4126 )

  • 我们已经重构了 scrapy.core.scheduler.Scheduler 类和相关队列类(请参见 SCHEDULER_PRIORITY_QUEUESCHEDULER_DISK_QUEUESCHEDULER_MEMORY_QUEUE )使实现自定义调度程序队列类更容易。看到了吗 计划程序队列类的更改 详情见下文。

  • 覆盖的设置现在以不同的格式记录。这更符合启动时记录的类似信息 (issue 4199 )

折旧清除¶

  • 这个 Scrapy shell 不再提供 sel 代理对象,使用 response.selector 相反 (issue 4347 )

  • LevelDB支持已删除 (issue 4112 )

  • The following functions have been removed from scrapy.utils.python:
    isbinarytext, is_writable, setattr_default, stringify_dict
    (issue 4362)

贬抑¶

  • 使用前缀为 SCRAPY_ 不推荐使用覆盖设置 (issue 4300 , issue 4374 , issue 4375 )

  • scrapy.linkextractors.FilteringLinkExtractor 已弃用,请使用 scrapy.linkextractors.LinkExtractor 相反 (issue 4045 )

  • 这个 noconnect 代理URL的查询字符串参数已弃用,应从代理URL中删除 (issue 4198 )

  • 这个 next 方法 scrapy.utils.python.MutableChain 已弃用,请使用全局 next() 功能或 MutableChain.__next__ 相反 (issue 4153 )

新特点¶

  • 补充 partial support 对于Python的 coroutine syntaxexperimental support 对于 asyncioasyncio -支持的库 (issue 4010 , issue 4259 , issue 4269 , issue 4270 , issue 4271 , issue 4316 , issue 4318 )

  • 新的 Response.follow_all 方法提供的功能与 Response.follow 但是支持一个iterable的url作为输入,并返回iterable请求 (issue 2582 , issue 4057 , issue 4286 )

  • Media pipelines now support FTP
    storage
    (issue 3928, issue 3961)

  • 新的 Response.certificate 属性将服务器的SSL证书公开为 twisted.internet.ssl.Certificate HTTPS响应的对象 (issue 2726 , issue 4054 )

  • 一个新的 DNS_RESOLVER 设置允许启用IPv6支持 (issue 1031 , issue 4227 )

  • 一个新的 SCRAPER_SLOT_MAX_ACTIVE_SIZE 设置允许配置现有的软限制,当正在处理的总响应数据太高时暂停请求下载 (issue 1410 , issue 3551 )

  • A new TWISTED_REACTOR setting allows customizing the
    reactor that Scrapy uses, allowing to
    enable asyncio support or deal with a
    common macOS issue (issue 2905,
    issue 4294)

  • Scheduler disk and memory queues may now use the class methods
    from_crawler or from_settings (issue 3884)

  • The new Response.cb_kwargs
    attribute serves as a shortcut for Response.request.cb_kwargs (issue 4331)

  • Response.follow now supports a
    flags parameter, for consistency with Request
    (issue 4277, issue 4279)

  • Item loader processors 现在可以是正则函数,它们不再需要是方法 (issue 3899 )

  • Rule 现在接受一个 errback 参数 (issue 4000 )

  • Request 不再需要 callbackerrback 参数已指定 (issue 3586 , issue 4008 )

  • LogFormatter 现在支持一些其他方法:

    • download_error 对于下载错误

    • item_error for exceptions
      raised during item processing by item pipelines

    • spider_error for exceptions
      raised from spider callbacks

    (issue 374 , issue 3986 , issue 3989 , issue 4176 , issue 4188 )

  • 这个 FEED_URI 设置现在支持 pathlib.Path 价值观 (issue 3731 , issue 4074 )

  • 一个新的 request_left_downloader 当请求离开下载程序时发送信号 (issue 4303 )

  • Scrapy在检测到使用 yield 但也返回一个值,因为返回的值将丢失 (issue 3484 , issue 3869 )

  • Spider 对象现在引发 AttributeError 如果他们没有 start_urls 属性或重新实现 start_requests ,但是有一个 start_url 属性 (issue 4133 , issue 4170 )

  • BaseItemExporter 子类现在可以使用 super().__init__(**kwargs) 而不是 self._configure(kwargs) 在他们 __init__ 方法,通过 dont_fail=True 给父母 __init__ 方法(如果需要),并访问 kwargsself._kwargs 打电话给他们的父母之后 __init__ 方法 (issue 4193 , issue 4370 )

  • 一个新的 keep_fragments 参数 scrapy.utils.request.request_fingerprint() 允许为URL中包含不同片段的请求生成不同的指纹 (issue 4104 )

  • 下载处理程序(请参见 DOWNLOAD_HANDLERS )现在可以使用 from_settingsfrom_crawler 其他垃圾组件已经支持的类方法 (issue 4126 )

  • scrapy.utils.python.MutableChain.__iter__ now returns self,
    allowing it to be used as a sequence
    (issue 4153)

错误修复¶

  • 这个 crawl 当爬行开始之前发生异常时,命令现在也会退出,退出代码为1 (issue 4175 , issue 4207 )

  • LinkExtractor.extract_links 不再对来自非UTF-8响应的查询字符串或url重新编码为UTF-8 (issue 998 , issue 1403 , issue 1949 , issue 4321 )

  • 第一个spider中间件(请参见 SPIDER_MIDDLEWARES )现在还处理从作为生成器的回调中引发的异常 (issue 4260 , issue 4272 )

  • 重定向到以3个斜杠开头的URL (/// )现在支持 (issue 4032 , issue 4042 )

  • Request 不再接受字符串作为 url 只是因为他们有结肠 (issue 2552 , issue 4094 )

  • The correct encoding is now used for attach names in
    MailSender (issue 4229, issue 4239)

  • RFPDupeFilter ,默认的 DUPEFILTER_CLASS ,不再写入额外的 \r 窗口中每行的字符,这使得 requests.seen 在那个平台上不必要的大文件 (issue 4283 )

  • Z shell自动完成现在查找 .html 文件,而不是 .http 文件,包括 -h 命令行开关 (issue 4122 , issue 4291 )

  • 将项目添加到 scrapy.utils.datatypes.LocalCache 没有 limit 定义不再引发 TypeError 例外 (issue 4123 )

  • Fixed a typo in the message of the ValueError exception raised when
    scrapy.utils.misc.create_instance() gets both settings and
    crawler set to None (issue 4128)

文档¶

  • API文档现在链接到相应源代码的联机、语法突出显示视图 (issue 4148 )

  • 链接到不存在的文档页现在允许访问侧栏 (issue 4152 , issue 4169 )

  • 文档中的交叉引用现在在悬停时显示工具提示 (issue 4173 , issue 4183 )

  • Improved the documentation about LinkExtractor.extract_links and
    simplified 链接提取器 (issue 4045)

  • 阐明了 ItemLoader.item 作品 (issue 3574 , issue 4099 )

  • Clarified that logging.basicConfig() should not be used when also
    using CrawlerProcess (issue 2149,
    issue 2352, issue 3146, issue 3960)

  • Clarified the requirements for Request objects
    when using persistence (issue 4124,
    issue 4139)

  • Clarified how to install a custom image pipeline (issue 4034, issue 4252)

  • 修复了 file_path 方法在 media pipeline 实例 (issue 4290 )

  • 涵盖了一个影响自定义的Scrapy 1.7.0中向后不兼容的更改 scrapy.core.scheduler.Scheduler 子类 (issue 4274 )

  • 改进了 README.rstCODE_OF_CONDUCT.md 文件夹 (issue 4059 )

  • 文档示例现在作为测试套件的一部分进行了检查,我们已经修复了检测到的一些问题 (issue 4142 , issue 4146 , issue 4171 , issue 4184 , issue 4190 )

  • 修复了逻辑问题,断开的链接和打字错误 (issue 4247 , issue 4258 , issue 4282 , issue 4288 , issue 4305 , issue 4308 , issue 4323 , issue 4338 , issue 4359 , issue 4361 )

  • 在引用 __init__ 对象的方法 (issue 4086 , issue 4088 )

  • Fixed an inconsistency between code and output in Scrapy一目了然
    (issue 4213)

  • 扩展 intersphinx 使用 (issue 4147 , issue 4172 , issue 4185 , issue 4194 , issue 4197 )

  • 我们现在使用Python的最新版本来构建文档 (issue 4140 , issue 4249 )

  • 已清理文档 (issue 4143 , issue 4275 )

质量保证¶

  • 重新启用代理 CONNECT 测验 (issue 2545 , issue 4114 )

  • 补充 Bandit 对我们的测试套件进行安全检查 (issue 4162 , issue 4181 )

  • 补充 Flake8 对我们的测试套件进行样式检查,并应用了许多相应的更改 (issue 3944 , issue 3945 , issue 4137 , issue 4157 , issue 4167 , issue 4174 , issue 4186 , issue 4195 , issue 4238 , issue 4246 , issue 4355 , issue 4360 , issue 4365 )

  • 提高测试覆盖率 (issue 4097 , issue 4218 , issue 4236 )

  • 开始报告最慢的测试,并改进了其中一些测试的性能 (issue 4163 , issue 4164 )

  • 修复了损坏的测试并重构了一些测试 (issue 4014 , issue 4095 , issue 4244 , issue 4268 , issue 4372 )

  • 修改了 tox 配置以允许使用任何Python版本运行测试,请运行 Bandit 和 Flake8 默认情况下进行测试,并以编程方式强制执行最低tox版本 (issue 4179 )

  • 已清理代码 (issue 3937 , issue 4208 , issue 4209 , issue 4210 , issue 4212 , issue 4369 , issue 4376 , issue 4378 )

计划程序队列类的更改¶

以下更改可能会影响所有类型的任何自定义队列类:

  • 这个 push 方法不再接收包含 request.priority * -1 . 如果需要该值,请从第一个位置参数获取它, request ,或者使用新的 priority() 方法在 scrapy.core.scheduler.ScrapyPriorityQueue 子类。

以下更改可能会影响自定义优先级队列类:

  • __init__ 方法或 from_crawlerfrom_settings 类方法:

    • 用于包含工厂函数的参数, qfactory ,现在作为名为的关键字参数传递 downstream_queue_cls .

    • 添加了一个新的关键字参数: key . 对于内存队列,它始终是空字符串,并指示 JOB_DIR 磁盘队列的值。

    • 包含上一次爬网数据的磁盘队列的参数, startpriosslot_startprios ,现在作为名为的关键字参数传递 startprios .

    • 这个 serialize 不再传递参数。在写入磁盘之前,磁盘队列类必须自己处理请求序列化,使用 request_to_dict()request_from_dict() 中的函数 scrapy.utils.reqser 模块。

以下更改可能会影响自定义磁盘和内存队列类:

  • 签名 __init__ 方法现在 __init__(self, crawler, key) .

以下更改特别影响 ScrapyPriorityQueueDownloaderAwarePriorityQueue 类来自 scrapy.core.scheduler 并可能影响子类:

  • __init__ 方法,则应用上述大多数更改。

    __init__ 仍然可以接收所有参数作为位置参数,但是:

    • downstream_queue_cls ,取代了 qfactory ,必须以不同的方式实例化。

      qfactory 已用优先级值(整数)实例化。

      实例 downstream_queue_cls 应该使用新的 ScrapyPriorityQueue.qfactoryDownloaderAwarePriorityQueue.pqfactory 方法。

    • 新的 key 参数替换了 startprios 参数1位于右侧。

  • 已添加以下类属性:

    • crawler

    • downstream_queue_cls (详见上文)

    • key (详见上文)

  • 这个 serialize 属性已被删除(以上详细信息)

以下更改特别影响 ScrapyPriorityQueue 类并可能影响子类:

  • 一个新的 priority() 已添加方法,该方法在给定请求时返回 request.priority * -1 .

    它用于 push() 以弥补它的删除 priority 参数。

  • 这个 spider 属性已删除。使用 crawler.spider 相反。

以下更改特别影响 DownloaderAwarePriorityQueue 类并可能影响子类:

  • 一个新的 pqueues 属性提供下载程序插槽名称到相应实例的映射 downstream_queue_cls .

(issue 3884 )

1.8.0(2019-10-28)¶

亮点:

  • 放弃了对Python3.4的支持并更新了最低要求;使Python3.8正式支持

  • 新的 Request.from_curl 类方法

  • 新的 ROBOTSTXT_PARSERROBOTSTXT_USER_AGENT 设置

  • 新的 DOWNLOADER_CLIENT_TLS_CIPHERSDOWNLOADER_CLIENT_TLS_VERBOSE_LOGGING 设置

向后不兼容的更改¶

  • 不再支持Python3.4,Scrapy的一些最低要求也发生了变化:

    • cssselect 0.9.1

    • cryptography 2.0

    • lxml 3.5.0

    • pyOpenSSL 16.2.0

    • queuelib 1.4.2

    • service_identity 16.0.0

    • six 1.10.0

    • Twisted 17.9.0(16.0.0,使用Python 2)

    • zope.interface 4.1.3

    (issue 3892 )

  • JSONRequest 现在叫做 JsonRequest 为了与类似的类保持一致 (issue 3929 , issue 3982 )

  • If you are using a custom context factory
    (DOWNLOADER_CLIENTCONTEXTFACTORY), its __init__ method must
    accept two new parameters: tls_verbose_logging and tls_ciphers
    (issue 2111, issue 3392, issue 3442, issue 3450)

  • ItemLoader 它的输入值现在变成了:

    >>> item = MyItem()
    >>> item['field'] = 'value1'
    >>> loader = ItemLoader(item=item)
    >>> item['field']
    ['value1']
    

    这是允许向现有字段添加值所必需的 (loader.add_value('field', 'value2')

    (issue 3804 , issue 3819 , issue 3897 , issue 3976 , issue 3998 , issue 4036 )

也见 折旧清除 下面。

新特点¶

  • A new Request.from_curl class
    method allows creating a request from a cURL command (issue 2985, issue 3862)

  • A new ROBOTSTXT_PARSER setting allows choosing which robots.txt
    parser to use. It includes built-in support for
    RobotFileParser,
    Protego (default), Reppy, and
    Robotexclusionrulesparser, and allows you to
    implement support for additional parsers (issue 754, issue 2669,
    issue 3796, issue 3935, issue 3969, issue 4006)

  • 一个新的 ROBOTSTXT_USER_AGENT 设置允许定义要用于的单独的用户代理字符串 robots.txt 解析 (issue 3931 , issue 3966 )

  • Rule 不再需要 LinkExtractor 参数 (issue 781 , issue 4016 )

  • 使用新的 DOWNLOADER_CLIENT_TLS_CIPHERS 设置以自定义默认HTTP/1.1下载程序使用的TLS/SSL密码 (issue 3392 , issue 3442 )

  • 设置新的 DOWNLOADER_CLIENT_TLS_VERBOSE_LOGGING 设置为 True 在建立HTTPS连接后启用有关TLS连接参数的调试级别消息 (issue 2111 , issue 3450 )

  • Callbacks that receive keyword arguments
    (see Request.cb_kwargs) can now be
    tested using the new @cb_kwargs
    spider contract (issue 3985, issue 3988)

  • 当A @scrapes 蜘蛛合同失败,所有丢失的字段现在报告 (issue 766 , issue 3939 )

  • Custom log formats can now drop messages by
    having the corresponding methods of the configured LOG_FORMATTER
    return None (issue 3984, issue 3987)

  • 一个大大改进的完成定义现在可用于 Zsh (issue 4069 )

错误修复¶

  • ItemLoader.load_item() 以后不再打电话给 ItemLoader.get_output_value()ItemLoader.load_item() 返回空数据 (issue 3804 , issue 3819 , issue 3897 , issue 3976 , issue 3998 , issue 4036 )

  • 固定的 DummyStatsCollector 提高 TypeError 例外 (issue 4007 , issue 4052 )

  • FilesPipeline.file_path and
    ImagesPipeline.file_path no longer choose
    file extensions that are not registered with IANA (issue 1287,
    issue 3953, issue 3954)

  • 使用时 botocore 为了在S3中持久化文件,所有支持botocore的头现在都被正确地映射了 (issue 3904 , issue 3905 )

  • FTP密码 FEED_URI 包含百分比转义字符的字符现在已正确解码 (issue 3941 )

  • 中的内存处理和错误处理问题 scrapy.utils.ssl.get_temp_key_info() 已修复 (issue 3920 )

文档¶

  • The documentation now covers how to define and configure a custom log
    format
    (issue 3616, issue 3660)

  • API documentation added for MarshalItemExporter
    and PythonItemExporter (issue 3973)

  • API documentation added for BaseItem and
    ItemMeta (issue 3999)

  • 小文档修复 (issue 2998 , issue 3398 , issue 3597 , issue 3894 , issue 3934 , issue 3978 , issue 3993 , issue 4022 , issue 4028 , issue 4033 , issue 4046 , issue 4050 , issue 4055 , issue 4056 , issue 4061 , issue 4072 , issue 4071 , issue 4079 , issue 4081 , issue 4089 , issue 4093 )

折旧清除¶

  • scrapy.xlib 已删除 (issue 4015 )

贬抑¶

  • 这个 LevelDB 存储后端 (scrapy.extensions.httpcache.LeveldbCacheStorage 的) HttpCacheMiddleware 被贬低 (issue 4085 , issue 4092 )

  • 使用无证文件 SCRAPY_PICKLED_SETTINGS_TO_OVERRIDE 环境变量已弃用 (issue 3910 )

  • scrapy.item.DictItem 已弃用,请使用 Item 相反 (issue 3999 )

其他变化¶

  • 持续集成测试所涵盖的可选废料需求的最低版本已更新:

    • botocore 1.3.23

    • Pillow 3.4.2

    但这些要求的可选版本不一定有效 (issue 3892 )

  • 用于bug报告和功能请求的GitHub模板 (issue 3126 , issue 3471 , issue 3749 , issue 3754 )

  • 持续集成修复 (issue 3923 )

  • 代码清理 (issue 3391 , issue 3907 , issue 3946 , issue 3950 , issue 4023 , issue 4031 )

刮伤1.7.4(2019-10-21)¶

Revert the fix for issue 3804 (issue 3819), which has a few undesired
side effects (issue 3897, issue 3976).

因此,当项目加载器用项目初始化时, ItemLoader.load_item() 再次打电话给 ItemLoader.get_output_value()ItemLoader.load_item() 返回空数据。

1.7.3(2019-08-01)¶

对python3.4强制执行lxml4.3.5或更低版本 (issue 3912 , issue 3918 )

Scrapy 1.7.2(2019-07-23)¶

修复python 2支持 (issue 3889 , issue 3893 , issue 3896 )

Scrapy 1.7.1(2019-07-18)¶

重新包装Scrapy1.7.0,这在Pypi中丢失了一些变化。

Scrapy 1.7.0(2019-07-18)¶

注解

确保安装Scrapy 1.7.1。pypi中的scrapy 1.7.0包是错误提交标记的结果,不包括下面描述的所有更改。

亮点:

  • 针对多个域的爬虫改进

  • 将参数传递给回调的更简单方法

  • JSON请求的新类

  • 基于规则的蜘蛛改进

  • 饲料输出的新功能

向后不兼容的更改¶

  • 429 现在是 RETRY_HTTP_CODES 默认设置

    这种变化是 向后不兼容 .如果你不想再试一次 429 ,必须重写 RETRY_HTTP_CODES 因此。

  • CrawlerCrawlerRunner.crawlCrawlerRunner.create_crawler 不再接受 Spider 子类实例,它们只接受 Spider 立即子类。

    Spider 子类实例从来没有打算工作,它们也没有像人们预期的那样工作:而不是使用 Spider 子类实例,它们的 from_crawler 方法以生成新实例。

  • 的非默认值 SCHEDULER_PRIORITY_QUEUE 设置可能停止工作。调度程序优先级队列类现在需要处理 Request 对象而不是任意的python数据结构。

  • 额外的 crawler 参数已添加到 __init__ 方法 Scheduler 班级。自定义调度程序子类不接受其 __init__ 方法可能会因为此更改而中断。

    有关详细信息,请参阅 SCHEDULER .

也见 折旧清除 下面。

新特点¶

  • 新的调度程序优先级队列, scrapy.pqueues.DownloaderAwarePriorityQueue ,可能是 enabled 对于以多个Web域为目标的爬虫的显著调度改进,不需要 CONCURRENT_REQUESTS_PER_IP 支持 (issue 3520 )

  • 一个新的 Request.cb_kwargs 属性为将关键字参数传递给回调方法提供了一种更清晰的方法 (issue 1138 , issue 3563 )

  • 一个新的 JSONRequest 类提供了一种更方便的方法来构建JSON请求 (issue 3504 , issue 3505 )

  • A process_request 已将回调传递给 Rule __init__ 方法现在接收 Response 作为第二个参数发出请求的对象 (issue 3682 )

  • 一个新的 restrict_text 的参数 LinkExtractor __init__ 方法允许通过链接文本筛选链接 (issue 3622 , issue 3635 )

  • 一个新的 FEED_STORAGE_S3_ACL 设置允许为导出到AmazonS3的源定义自定义ACL (issue 3607 )

  • 一个新的 FEED_STORAGE_FTP_ACTIVE 设置允许对导出到FTP服务器的源使用FTP的活动连接模式 (issue 3829 )

  • 一个新的 METAREFRESH_IGNORE_TAGS 设置允许覆盖在搜索触发重定向的HTML元标记响应时忽略哪些HTML标记。 (issue 1422 , issue 3768 )

  • 一个新的 redirect_reasons 请求元键在每次跟踪的重定向之后公开原因(状态代码、元刷新) (issue 3581 , issue 3687 )

  • The SCRAPY_CHECK variable is now set to the true string during runs
    of the check command, which allows detecting contract
    check runs from code
    (issue 3704,
    issue 3739)

  • A new Item.deepcopy() method makes it
    easier to deep-copy items (issue 1493,
    issue 3671)

  • CoreStats 同时记录 elapsed_time_seconds 现在 (issue 3638 )

  • 例外 ItemLoader input and output processors 现在更详细了 (issue 3836 , issue 3840 )

  • CrawlerCrawlerRunner.crawlCrawlerRunner.create_crawler 如果他们收到 Spider 子类实例而不是子类本身 (issue 2283 , issue 3610 , issue 3872 )

错误修复¶

  • process_spider_exception() 现在也为生成器调用 (issue 220 , issue 2061 )

  • 系统异常,如 KeyboardInterrupt 不再被抓住 (issue 3726 )

  • ItemLoader.load_item() 以后不再打电话给 ItemLoader.get_output_value()ItemLoader.load_item() 返回空数据 (issue 3804 , issue 3819 )

  • The images pipeline (ImagesPipeline) no
    longer ignores these Amazon S3 settings: AWS_ENDPOINT_URL,
    AWS_REGION_NAME, AWS_USE_SSL, AWS_VERIFY
    (issue 3625)

  • 修复了内存泄漏 scrapy.pipelines.media.MediaPipeline 例如,影响来自定制中间商的非200响应和异常 (issue 3813 )

  • 带有私人回调的请求现在正确地从磁盘上取消了序列化 (issue 3790 )

  • FormRequest.from_response() 现在处理诸如主要Web浏览器之类的无效方法 (issue 3777 , issue 3794 )

文档¶

  • 一个新话题, 选择动态加载的内容 ,介绍了读取动态加载数据的推荐方法 (issue 3703 )

  • 宽爬行 现在提供有关内存使用的信息 (issue 1264 , issue 3866 )

  • The documentation of Rule now covers how to access
    the text of a link when using CrawlSpider
    (issue 3711, issue 3712)

  • A new section, 编写自己的存储后端, covers writing a custom
    cache storage backend for
    HttpCacheMiddleware
    (issue 3683, issue 3692)

  • 一个新的 FAQ 入口, 如何在项目管道中将项目拆分为多个项目? ,解释当要从项目管道中将项目拆分为多个项目时要执行的操作。 (issue 2240 , issue 3672 )

  • 更新了 FAQ entry about crawl order 解释为什么前几个请求很少遵循所需的顺序 (issue 1739 , issue 3621 )

  • 这个 LOGSTATS_INTERVAL 设置 (issue 3730 ) FilesPipeline.file_pathImagesPipeline.file_path 方法 (issue 2253 , issue 3609 ) Crawler.stop() 方法 (issue 3842 )现在记录在案

  • 文档中某些令人困惑或误导的部分现在更加清晰了 (issue 1347 , issue 1789 , issue 2289 , issue 3069 , issue 3615 , issue 3626 , issue 3668 , issue 3670 , issue 3673 , issue 3728 , issue 3762 , issue 3861 , issue 3882 )

  • 小文档修复 (issue 3648 , issue 3649 , issue 3662 , issue 3674 , issue 3676 , issue 3694 , issue 3724 , issue 3764 , issue 3767 , issue 3791 , issue 3797 , issue 3806 , issue 3812 )

折旧清除¶

已删除以下已弃用的API (issue 3578 ):

  • scrapy.conf (使用) Crawler.settings

  • scrapy.core.downloader.handlers

    • http.HttpDownloadHandler (使用) http10.HTTP10DownloadHandler

  • scrapy.loader.ItemLoader._get_values (使用) _get_xpathvalues

  • scrapy.loader.XPathItemLoader (使用) ItemLoader

  • scrapy.log (见 登录

  • scrapy.pipelines

    • files.FilesPipeline.file_key (使用) file_path

    • images.ImagesPipeline.file_key (使用) file_path

    • images.ImagesPipeline.image_key (使用) file_path

    • images.ImagesPipeline.thumb_key (使用) thumb_path

  • 从两者 scrapy.selectorscrapy.selector.lxmlsel

    • HtmlXPathSelector (使用) Selector

    • XmlXPathSelector (使用) Selector

    • XPathSelector (使用) Selector

    • XPathSelectorList (使用) Selector

  • scrapy.selector.csstranslator

    • ScrapyGenericTranslator (使用) parsel.csstranslator.GenericTranslator)

    • ScrapyHTMLTranslator (使用) parsel.csstranslator.HTMLTranslator)

    • ScrapyXPathExpr (使用) parsel.csstranslator.XPathExpr)

  • Selector

    • _root (两个 __init__ 方法参数和对象属性,使用 root

    • extract_unquoted (使用) getall

    • select (使用) xpath

  • SelectorList

    • extract_unquoted (使用) getall

    • select (使用) xpath

    • x (使用) xpath

  • scrapy.spiders.BaseSpider (使用) Spider

  • Spider (和子类):

    • DOWNLOAD_DELAY (使用) download_delay

    • set_crawler (使用) from_crawler()

  • scrapy.spiders.spiders (使用) SpiderLoader

  • scrapy.telnet (使用) scrapy.extensions.telnet

  • scrapy.utils.python

    • str_to_unicode (使用) to_unicode

    • unicode_to_str (使用) to_bytes

  • scrapy.utils.response.body_or_str

以下不推荐使用的设置也已删除 (issue 3578 ):

  • SPIDER_MANAGER_CLASS (使用) SPIDER_LOADER_CLASS

贬抑¶

  • 这个 queuelib.PriorityQueue 价值 SCHEDULER_PRIORITY_QUEUE 设置已弃用。使用 scrapy.pqueues.ScrapyPriorityQueue 相反。

  • process_request 回调传递给 Rule 不接受两个参数的将被弃用。

  • 以下模块已弃用:

    • scrapy.utils.http (使用) w3lib.http )

    • scrapy.utils.markup (使用) w3lib.html )

    • scrapy.utils.multipart (使用) urllib3 )

  • 这个 scrapy.utils.datatypes.MergeDict 对于python 3代码基,不推荐使用类。使用 ChainMap 相反。 (issue 3878 )

  • 这个 scrapy.utils.gz.is_gzipped 函数已弃用。使用 scrapy.utils.gz.gzip_magic_number 相反。

其他变化¶

  • It is now possible to run all tests from the same tox environment in
    parallel; the documentation now covers this and other ways to run
    tests
    (issue 3707)

  • 现在可以生成API文档覆盖率报告 (issue 3806 , issue 3810 , issue 3860 )

  • The documentation policies now require
    docstrings (issue 3701) that follow PEP 257 (issue 3748)

  • 内部修复和清理 (issue 3629 , issue 3643 , issue 3684 , issue 3698 , issue 3734 , issue 3735 , issue 3736 , issue 3737 , issue 3809 , issue 3821 , issue 3825 , issue 3827 , issue 3833 , issue 3857 , issue 3877 )

Scrapy 1.6.0(2019-01-30)¶

亮点:

  • 更好的Windows支持;

  • Python 3.7兼容性;

  • 大的文档改进,包括从 .extract_first() + .extract() API到 .get() + .getall() 应用程序编程接口;

  • feed 导出、文件管道和媒体管道改进;

  • 更好的扩展性: item_errorrequest_reached_downloader 信号; from_crawler 支持Feed 导出、Feed 仓库和双过滤器。

  • scrapy.contracts 修复和新功能;

  • telnet控制台安全性改进,首次作为后端发布于 Scrapy 1.5.2(2019-01-22) ;

  • 清理弃用的代码;

  • 各种错误修复、小的新特性和整个代码库的可用性改进。

选择器API更改¶

虽然这些不是scrapy本身的更改,而是scrapy用于xpath/css选择器的parsel_u库中的更改,但这些更改在这里值得一提。Scrapy现在依赖于parsel>=1.5,并且Scrapy文档会更新以跟踪最近的 parsel API惯例。

最明显的变化是 .get().getall() 选择器方法现在比 .extract_first().extract() . 我们认为这些新方法会产生更简洁和可读的代码。见 extract()和extract_first()。 了解更多详细信息。

注解

目前有 no plans 贬低 .extract().extract_first() 方法。

另一个有用的新特性是 Selector.attribSelectorList.attrib 属性,这使得获取HTML元素的属性更加容易。见 选择元素属性 .

CSS选择器缓存在parsel>=1.5中,这使得在多次使用相同的css路径时更快。这是非常常见的情况下,剪贴蜘蛛:回调通常被称为多次,在不同的网页。

如果使用自定义 SelectorSelectorList 子类 backward incompatible Parsel中的更改可能会影响代码。见 parsel changelog 详细描述,以及完整的改进列表。

Telnet控制台¶

向后不兼容: Scrapy的telnet控制台现在需要用户名和密码。见 远程登录控制台 了解更多详细信息。此更改修复了 安全问题; 详细说明见 Scrapy 1.5.2(2019-01-22)

新的可扩展性功能¶

  • from_crawler 对Feed 导出和Feed仓库增加了支持。除此之外,它还允许从自定义饲料仓库和出口商访问零碎设置。( issue 1605 , issue 3348 )

  • from_crawler 对双过滤器增加了支持( issue 2956 );这允许从双面打印器访问设置或蜘蛛。

  • item_error 在管道中发生错误时激发( issue 3256;

  • request_reached_downloader 当下载程序收到新请求时激发;此信号可能有用,例如,对于自定义计划程序有用( issue 3393 )

  • 新建SiteMapSpider sitemap_filter() 方法,该方法允许根据SiteMapSpider子类中的属性选择站点地图条目( issue 3512 )

  • 下载程序处理程序的延迟加载现在是可选的;这使得在自定义下载程序处理程序中能够更好地处理初始化错误。( issue 3394 )

新的文件管道和媒体管道功能¶

  • 显示s3filestore的更多选项: AWS_ENDPOINT_URLAWS_USE_SSLAWS_VERIFYAWS_REGION_NAME . 例如,这允许使用可选的或自托管的与AWS兼容的提供程序( issue 2609 , issue 3548 )

  • 对谷歌云存储的ACL支持: FILES_STORE_GCS_ACLIMAGES_STORE_GCS_ACL ( issue 3199 )

scrapy.contracts 改进¶

  • 更好地处理合同代码中的异常( issue 3377;

  • dont_filter=True 用于合同请求,该请求允许使用相同的URL测试不同的回调( issue 3381;

  • request_cls 合同子类中的属性允许在合同中使用不同的请求类,例如FormRequest( issue 3383 )

  • 合同中的固定errback处理,例如,对于为返回非200响应的URL执行合同的情况( issue 3371 )

可用性改进¶

  • robotstxtmiddleware的更多统计信息( issue 3100 )

  • 信息日志级别用于显示telnet主机/端口( issue 3115 )

  • 在robotstxtmiddleware中将消息添加到ignorerequest( issue 3113 )

  • 更好地验证 url 论点 Response.follow ( issue 3131 )

  • 当spider初始化出错时,从scray命令返回非零退出代码 (issue 3226 )

  • 链接提取改进:“ftp”添加到方案列表中( issue 3152 )将“flv”添加到常用视频扩展( issue 3165 )

  • 禁用导出程序时出现更好的错误消息( issue 3358;

  • scrapy shell --help 提到本地文件所需的语法( ./file.html - issue 3496 .

  • Referer header值添加到rfpdupefilter日志消息中( issue 3588 )

错误修复¶

  • 修复了Windows下.csv导出中多余空行的问题( issue 3039;

  • 在为磁盘队列序列化对象时正确处理python 3中的picking错误( issue 3082 )

  • 复制请求时标志现在被保留( issue 3342;

  • FormRequest.from_response clickdata不应忽略带有 input[type=image] ( issue 3153 )

  • FormRequest.from响应应保留重复的密钥( issue 3247 )

文档改进¶

  • 重新编写文档是为了建议.get/.getall API而不是.extract/.extract_。也, 选择器 文档被更新并重新构造以匹配最新的Parsel文档;它们现在包含更多的主题,例如 选择元素属性CSS选择器的扩展 ( issue 3390 )

  • 使用浏览器的开发人员工具进行抓取 是一个新的教程,它取代了旧的火狐和Firebug教程( issue 3400 )

  • Scrapy_项目环境变量记录在案( issue 3518;

  • 安装说明中添加了故障排除部分( issue 3517;

  • 改进了教程中初学者资源的链接( issue 3367 , issue 3468;

  • 固定的 RETRY_HTTP_CODES 文档中的默认值( issue 3335;

  • 移除未使用的素材 DEPTH_STATS 文档选项( issue 3245;

  • 其他清理( issue 3347 , issue 3350 , issue 3445 , issue 3544 , issue 3605 )

折旧清除¶

1.0以前版本的 Scrapy 模块名称的兼容性垫片已移除( issue 3318 ):

  • scrapy.command

  • scrapy.contrib (所有子模块)

  • scrapy.contrib_exp (所有子模块)

  • scrapy.dupefilter

  • scrapy.linkextractor

  • scrapy.project

  • scrapy.spider

  • scrapy.spidermanager

  • scrapy.squeue

  • scrapy.stats

  • scrapy.statscol

  • scrapy.utils.decorator

有关详细信息见 模块重新定位 ,或使用Scrapy 1.5.x Deprecation Warnings中的建议更新代码。

其他折旧移除:

  • 已删除不推荐使用的scrapy.interfaces.ispIderManager;请使用scrapy.interfaces.ispIderLoader。

  • 已弃用 CrawlerSettings 类已删除( issue 3327 )

  • 已弃用 Settings.overridesSettings.defaults 属性被删除( issue 3327 , issue 3359 )

其他改进、清理¶

  • 所有 Scrapy 测试现在都在Windows上通过; Scrapy 测试套件在CI上的Windows环境中执行( issue 3315 )

  • Python 3.7支持( issue 3326 , issue 3150 , issue 3547 )

  • 测试和CI修复( issue 3526 , issue 3538 , issue 3308 , issue 3311 , issue 3309 , issue 3305 , issue 3210 , issue 3299 )

  • scrapy.http.cookies.CookieJar.clear 接受“域”、“路径”和“名称”可选参数( issue 3231 )

  • 附加文件包含在SDIST中( issue 3495;

  • 代码样式修复( issue 3405 , issue 3304;

  • 已删除不需要的.strip()调用( issue 3519;

  • collections.deque用于存储MiddleWarManager方法,而不是列表( issue 3476 )

Scrapy 1.5.2(2019-01-22)¶

  • 安全修补程序: telnet控制台扩展可以很容易地被发布内容到http://localhost:6023的流氓网站利用,我们还没有找到从scrappy利用它的方法,但是很容易欺骗浏览器这样做,并提高了本地开发环境的风险。

    修复程序向后不兼容 ,默认情况下,它使用随机生成的密码启用telnet用户密码验证。如果不能立即升级,请考虑设置 TELNETCONSOLE_PORT 超出其默认值。

    有关详细信息的文档见 telnet console

  • 由于boto导入错误,GCE环境下的Backport CI构建失败。

Scrapy 1.5.1(2018-07-12)¶

这是一个包含重要错误修复的维护版本,但没有新功能:

  • O(N^2) 解决了影响python 3和pypy的gzip解压问题( issue 3281;

  • 改进了对TLS验证错误的跳过( issue 3166;

  • Ctrl-C处理在python 3.5中是固定的+( issue 3096 ;

  • 测试修复 issue 3092 , issue 3263 ;

  • 文档改进( issue 3058 , issue 3059 , issue 3089 , issue 3123 , issue 3127 , issue 3189 , issue 3224 , issue 3280 , issue 3279 , issue 3201 , issue 3260 , issue 3284 , issue 3298 , issue 3294 )

Scrapy 1.5.0(2017-12-29)¶

这个版本在代码库中带来了一些新的小特性和改进。一些亮点:

  • 文件管道和ImageSpipeline支持Google云存储。

  • 随着到代理的连接现在可以重用,使用代理服务器进行爬行变得更加高效。

  • 对警告、异常和日志消息进行了改进,使调试更加容易。

  • scrapy parse 命令现在允许通过 --meta 参数。

  • 与python 3.6、pypy和pypy3的兼容性得到了改进;通过在CI上运行测试,pypy和pypy3现在得到了官方支持。

  • 更好地默认处理HTTP 308、522和524状态代码。

  • 像往常一样,文档得到了改进。

向后不兼容的更改¶

  • Scrapy1.5放弃了对python 3.3的支持。

  • 默认的scrapy用户代理现在使用https链接到scrapy.org( issue 2983 ) 这在技术上是向后不兼容的; 覆盖 USER_AGENT 如果你依赖旧的价值观。

  • 记录被覆盖的设置 custom_settings 是固定的; this is technically backward-incompatible 因为记录器从 [scrapy.utils.log][scrapy.crawler] . 如果您正在分析垃圾日志,请更新日志分析器( issue 1343 )

  • Linkextractor现在忽略 m4v 默认情况下,这是行为的更改。

  • 522和524状态代码添加到 RETRY_HTTP_CODES ( issue 2851 )

新特点¶

  • 支持 <link> 标签在 Response.follow ( issue 2785 )

  • Support for ptpython REPL (issue 2654)

  • Google云存储支持文件管道和图像管道( issue 2923 )

  • 新的 --meta “scrapy parse”命令的选项允许传递附加请求。( issue 2883 )

  • 使用时填充spider变量 shell.inspect_response ( issue 2812 )

  • 处理HTTP 308永久重定向( issue 2844 )

  • 将522和524添加到 RETRY_HTTP_CODES ( issue 2851 )

  • 启动时记录版本信息( issue 2857 )

  • scrapy.mail.MailSender 现在在python 3中工作(它需要Twisted17.9.0)

  • 重新使用与代理服务器的连接( issue 2743 )

  • 为下载器中间件添加模板( issue 2755 )

  • 未定义分析回调时NotImplementedError的显式消息( issue 2831 )

  • CrawlerProcess有一个选项可以禁用安装根日志处理程序( issue 2921 )

  • Linkextractor现在忽略 m4v 默认情况下的扩展

  • 更好地记录响应消息 DOWNLOAD_WARNSIZEDOWNLOAD_MAXSIZE 限制(限制) issue 2927 )

  • 当URL被放入时显示警告 Spider.allowed_domains 而不是域( issue 2250 )

错误修复¶

  • 修复由重写的设置的日志记录 custom_settingsthis is technically backward-incompatible 因为记录器从 [scrapy.utils.log][scrapy.crawler] ,因此如果需要,请更新日志分析器( issue 1343 )

  • 默认的scrapy用户代理现在使用https链接到scrapy.org( issue 2983 ) 这在技术上是向后不兼容的; 覆盖 USER_AGENT 如果你依赖旧的价值观。

  • 修复pypy和pypy3测试失败,正式支持它们( issue 2793 , issue 2935 , issue 2990 , issue 3050 , issue 2213 , issue 3048 )

  • 在下列情况下修复DNS解析程序 DNSCACHE_ENABLED=False ( issue 2811 )

  • 添加 cryptography for Debian Jessie tox test env (issue 2848)

  • 添加验证以检查请求回调是否可调用( issue 2766 )

  • 端口 extras/qpsclient.py 到Python 3(Python) issue 2849 )

  • 在python 3的场景下使用getfullargspec来停止取消预测警告( issue 2862 )

  • 更新不推荐使用的测试别名( issue 2876 )

  • 固定 SitemapSpider 支持备用链接( issue 2853 )

文档¶

  • 为添加了缺少的项目符号点 AUTOTHROTTLE_TARGET_CONCURRENCY 设置。( issue 2756 )

  • 更新贡献文档,记录新的支持渠道( issue 2762 ,问题:“3038”

  • 在文档中包含对Scrapy Subreddit的引用

  • 修复断开的链接;对外部链接使用https://( issue 2978 , issue 2982 , issue 2958 )

  • 文档CloseSpider扩展更好( issue 2759 )

  • 在MongoDB示例中( issue 2781 )使用 pymongo.collection.Collection.insert_one()

  • 拼写错误和打字错误( issue 2828 , issue 2837 , issue 2884 , issue 2924 )

  • 澄清 CSVFeedSpider.headers 文件编制( issue 2826 )

  • 文件 DontCloseSpider 例外和澄清 spider_idle ( issue 2791 )

  • 更新自述文件中的“releases”部分( issue 2764 )

  • 修正RST语法 DOWNLOAD_FAIL_ON_DATALOSS 文档库 issue 2763 )

  • StartProject参数描述中的小修复( issue 2866 )

  • 在response.body文档中澄清数据类型( issue 2922 )

  • 添加有关的注释 request.meta['depth'] 到DepthmIddleware文档( issue 2374 )

  • 添加有关的注释 request.meta['dont_merge_cookies'] to CookiesMiddleware docs (issue 2999)

  • 最新的项目结构示例( issue 2964 , issue 2976 )

  • Itemexporters用法的更好示例( issue 2989 )

  • 文件 from_crawler 蜘蛛和下载者中间商的方法( issue 3019 )

Scrapy 1.4.0(2017-05-18)¶

Scrapy1.4并没有带来那么多惊人的新功能,但还是有相当多的便利改进。

Scrappy现在支持匿名ftp会话,通过新的 FTP_USERFTP_PASSWORD 设置。如果您使用的是Twisted版本17.1.0或更高版本,那么ftp现在可用于python 3。

有一个新的 response.follow 创建请求的方法; 现在,它是一种推荐的在“ Scrapy 蜘蛛”中创建请求的方法。. 这种方法使得编写正确的spider更加容易; response.follow 与创建 scrapy.Request 直接对象:

  • 它处理相关的URL;

  • 它可以在非utf8页面上正确地使用非ASCII URL;

  • 除了绝对和相对URL之外,它还支持选择器;用于 <a> 元素也可以提取它们的Href值。

例如,而不是:

for href in response.css('li.page a::attr(href)').extract():
url = response.urljoin(href)
yield scrapy.Request(url, self.parse, encoding=response.encoding)

现在可以写下:

for a in response.css('li.page a'):
yield response.follow(a, self.parse)

链接提取器也得到了改进。 它们与常规现代浏览器的工作方式类似:在构建“Link”对象时,从属性中删除前导和尾随空格(想象``href =“http://example.com”``)。 使用``FormRequest``的``action``属性也会发生这种空白剥离。

**请注意,链接提取器在默认情况下不再规范化URL。**这让用户不时感到困惑,实际上浏览器并不是这样做的,因此我们删除了对提取链接的额外转换。

对于那些想要更多控制 Referer: 当跟踪链接时Scrapy发送的标题,您可以设置自己的 Referrer Policy . 在Scrapy 1.4之前,默认 RefererMiddleware 会简单而盲目地将其设置为生成HTTP请求的响应的URL(这可能会泄漏URL种子的信息)。默认情况下,scrappy现在的行为与常规浏览器非常相似。这个策略完全可以用W3C标准值定制(或者如果你愿意的话,可以用你自己定制的值)。见 REFERRER_POLICY 有关详细信息。

为了使scrappyspider更容易调试,scrappy在1.4中默认记录更多的统计信息:内存使用统计信息、详细的重试统计信息、详细的HTTP错误代码统计信息。类似的变化是,HTTP缓存路径现在也可以在日志中看到。

最后但同样重要的是,scrapy现在可以选择使用新的 FEED_EXPORT_INDENT 设置。

享受!(或继续阅读此版本中的其他更改。)

折旧和向后不兼容的变更¶

  • Default to canonicalize=False in
    scrapy.linkextractors.LinkExtractor
    (issue 2537, fixes issue 1941 and issue 1982):
    warning, this is technically backward-incompatible

  • 默认情况下启用memusage扩展( issue 2539 修正 issue 2187 ; this is technically backward-incompatible 因此,请检查您是否有任何非违约行为 MEMUSAGE_*** 选项集。

  • EDITOR 环境变量现在优先于 EDITOR 在settings.py中定义的选项( issue 1829 );报废默认设置不再依赖于环境变量。 从技术上讲,这是一个前后不相容的变化.

  • 不推荐使用``Spider.make_requests_from_url``(:issue:1728,fixes:issue:1495)。

新特点¶

  • 接受代理凭据 proxy 请求元键( issue 2526 )

  • 支持 brotli-compressed content; requires optional brotlipy (issue 2535)

  • 新的 response.follow 创建请求的快捷方式( issue 1940 )

  • 补充 flags 参数和属性 Request 对象( issue 2047 )

  • 支持匿名ftp( issue 2342 )

  • 补充 retry/countretry/max_reachedretry/reason_count/<reason> 统计到 RetryMiddleware ( issue 2543 )

  • 补充 httperror/response_ignored_counthttperror/response_ignored_status_count/<status> 统计到 HttpErrorMiddleware ( issue 2566 )

  • 可定制的 Referrer policy in RefererMiddleware ( issue 2306 )

  • 新的 data: URI下载处理程序器( issue 2334 修正 issue 2156 )

  • 使用HTTP缓存时的日志缓存目录( issue 2611 修正 issue 2604 )

  • 当项目包含重复的蜘蛛名称时警告用户(修复 issue 2181 )

  • scrapy.utils.datatypes.CaselessDict 现在接受 Mapping 实例而不仅仅是dicts (issue 2646 )

  • Media downloadsFilesPipelineImagesPipeline ,现在可以选择使用新的 MEDIA_ALLOW_REDIRECTS 设置 (issue 2616 修正 issue 2004 )

  • 接受来自使用新的 DOWNLOAD_FAIL_ON_DATALOSS 设置( issue 2590 修正 issue 2586 )

  • JSON和XML项的可选漂亮打印通过 FEED_EXPORT_INDENT 设置( issue 2456 修正 issue 1327 )

  • 允许删除字段 FormRequest.from_response 格式数据 None 值已传递( issue 667 )

  • 每个请求使用新的 max_retry_times 元密钥(元密钥) issue 2642 )

  • python -m scrapy 作为更明确的替代方案 scrapy 命令( issue 2740 )

错误修复¶

  • Linkextractor现在从属性中去掉前导空格和尾随空格。( issue 2547 修正 issue 1614 )

  • Properly handle whitespaces in action attribute in
    FormRequest (issue 2548)

  • 从代理服务器缓冲连接响应字节,直到收到所有HTTP头( issue 2495 修正 issue 2491 )

  • FTP下载器现在可以在python 3上工作,前提是使用twisted>=17.1( issue 2599 )

  • 在解压缩内容后使用body选择响应类型( issue 2393 修正 issue 2145 )

  • 总是解压缩 Content-Encoding: gzipHttpCompressionMiddleware 阶段(阶段) issue 2391 )

  • 尊重自定义日志级别 Spider.custom_settings ( issue 2581 修正 issue 1612 )

  • MacOS的“make htmlview”修复程序( issue 2661 )

  • 从命令列表中删除“命令”( issue 2695 )

  • 修复具有空正文的投递请求的重复内容长度头( issue 2677 )

  • 适当地取消大量下载,如上面所述 DOWNLOAD_MAXSIZE ( issue 1616 )

  • ImageSpipeline:使用调色板固定处理透明PNG图像( issue 2675 )

清理和重构¶

  • 测试:删除临时文件和文件夹 (issue 2570 ),修复了macOS上的ProjectUtilsTest (issue 2569 ),在Travis CI上使用portable pypy for Linux (issue 2710 )

  • 独立建筑请求 _requests_to_follow 爬行蜘蛛( issue 2562 )

  • 删除“python 3 progress”徽章( issue 2567 )

  • 再添加几行到 .gitignore ( issue 2557 )

  • 删除BumpVersion预发布配置( issue 2159 )

  • 添加codecov.yml文件( issue 2750 )

  • 基于Twisted版本设置上下文工厂实现(:issue:2577,fixes:issue:2560

  • 添加省略 self 默认项目中间件模板中的参数( issue 2595 )

  • 删除冗余 slot.add_request() 调用ExecutionEngine( issue 2617 )

  • Catch more specific os.error exception in
    scrapy.pipelines.files.FSFilesStore (issue 2644)

  • 更改“localhost”测试服务器证书( issue 2720 )

  • 移除未使用的 MEMUSAGE_REPORT 设置( issue 2576 )

文档¶

  • 导出程序需要二进制模式( issue 2564 修正 issue 2553 )

  • 提及问题 FormRequest.from_response 由于lxml中的错误( issue 2572 )

  • 在模板中统一使用单引号( issue 2596 )

  • 文件 ftp_userftp_password 元密钥(元密钥) issue 2587 )

  • 关于弃用的``contrib /``(:issue:2636)的删除部分

  • 在Windows上安装Scrapy时推荐Anaconda(问题:2477,修复:问题:2475

  • 常见问题解答:在Windows上重写关于python 3支持的说明( issue 2690 )

  • 重新排列选择器节( issue 2705 )

  • 去除 __nonzero__SelectorList 文档 (issue 2683 )

  • 在文档中说明如何禁用请求筛选 DUPEFILTER_CLASS 设置( issue 2714 )

  • 在文档设置自述文件中添加sphinx_rtd_主题( issue 2668 )

  • 在json item writer示例中以文本模式打开文件( issue 2729 )

  • 澄清 allowed_domains 实例(例) issue 2670 )

Scrapy 1.3.3(2017-03-10)¶

错误修复¶

  • 制作 SpiderLoader 提升 ImportError 对于缺少依赖项和错误 SPIDER_MODULES . 从1.3.0开始,这些例外被作为警告而沉默。引入新的设置,以便在警告或异常(如果需要)之间切换;有关详细信息请参见 SPIDER_LOADER_WARN_ONLY

Scrapy 1.3.2(2017-02-13)¶

错误修复¶

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

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

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

Scrapy 1.3.1(2017-02-08)¶

新特点¶

  • 支持布尔设置的``'True''False'``字符串值(:issue:2519); 你现在可以做一些像``scrapy crawl myspider -s REDIRECT_ENABLED = False``这样的事情。

  • 支持Kwargs response.xpath() 使用 XPath variables 和特殊名称空间声明;这至少需要Parselv1.1( issue 2457 )

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

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

错误修复¶

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

  • 固定 view 命令;这是v1.3.0中的回归( issue 2503 )

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

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

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

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

  • 按顺序强制执行组件的数值 SPIDER_MIDDLEWARESDOWNLOADER_MIDDLEWARESEXTENIONSSPIDER_CONTRACTS ( issue 2420 )

文档¶

  • 改写行为准则部分并升级到贡献者契约v1.4 (issue 2469 )

  • 澄清传递spider参数会将其转换为spider属性( issue 2483 )

  • 在``FormRequest.from_response()``(:issue:2497)上记录``formid``参数。

  • 向自述文件添加.rst扩展名( issue 2507 )

  • 提到级别数据库缓存存储后端( issue 2525 )

  • 使用 yield 在示例回调代码中( issue 2533 )

  • 添加有关HTML实体解码的说明 .re()/.re_first() ( issue 1704 )

  • 错别字(:问题:2512,:issue:2534,:issue:2531)。

清除¶

  • Remove redundant check in MetaRefreshMiddleware (issue 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.web.clienttwisted.internet.endpoints 直接。(另请参见下面的清理。)

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

新特点¶

  • ``MailSender``现在接受单个字符串作为``to``和``cc``参数的值(:issue:2272

  • scrapy fetch urlscrapy shell urlfetch(url) 在Scrapy shell中,默认情况下遵循HTTP重定向 (issue 2290 见 fetchshell 有关详细信息。

  • HttpErrorMiddleware 现在记录错误 INFO 级别而不是 DEBUG ;从技术上讲 backward incompatible 所以请检查您的日志分析器。

  • 默认情况下,记录器名称现在使用长格式路径,例如 [scrapy.extensions.logstats] 而不是先前版本(例如 [scrapy] 这是 backward incompatible 如果日志解析器需要短的logger name部分。您可以使用 LOG_SHORT_NAMES 设置为 True .

依赖关系和清理¶

  • Scrappy现在需要twisted>=13.1,这已经是许多Linux发行版的情况了。

  • 结果,我们摆脱了 scrapy.xlib.tx.* 模块,它复制了一些扭曲的代码,供用户使用“旧”的扭曲版本

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

Scrapy 1.2.3(2017-03-03)¶

  • 打包修复:禁止在setup.py中支持不受支持的Twisted版本

Scrapy 1.2.2(2016-12-06)¶

错误修复¶

  • 修复管道上发生故障时的神秘回溯 open_spider() ( issue 2011 )

  • 修复嵌入的ipython外壳变量(修复 issue 396 重新出现在1.2.0中,固定在 issue 2418 )

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

    • 处理(非标准)相对站点地图URL( issue 2390 )

    • 在python 2中处理非ASCII URL和用户代理( issue 2373 )

文档¶

  • 文件 "download_latency" 键入 Requestmeta DICT issue 2033 )

  • 从目录中删除Ubuntu包上的页面(已弃用且不受支持)( issue 2335 )

  • 一些固定的拼写错误(:issue:2346,:issue:2369,:issue:2369,:issue:2380)和澄清(:issue:2354,:issue:2325,:问题:2414

其他变化¶

  • 广告`conda-forge`_作为Scrapy的官方conda频道(:issue:2387

  • 尝试使用时出现更多有用的错误消息 .css().xpath() 关于非文本响应( issue 2264 )

  • startproject 命令现在生成一个示例 middlewares.py 文件(文件) issue 2335 )

  • 在``scrapy version`` verbose output(:issue:2404)中添加更多依赖项的版本信息

  • 全部删除 *.pyc 源分发中的文件( issue 2386 )

Scrapy 1.2.1(2016-10-21)¶

错误修复¶

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

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

文档¶

  • 修复jsonWriterPipeline示例( issue 2302 )

  • 各种注释: issue 2330 关于蜘蛛的名字, issue 2329 在中间件方法处理顺序上, issue 2327 以列表形式获取多值HTTP头。

其他变化¶

  • 从内置蜘蛛模板中的``start_urls``中删除了``www``(:issue:2299)。

Scrapy 1.2.0(2016-10-03)¶

新特点¶

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

  • startproject 命令现在支持一个可选的目标目录,以根据项目名称覆盖默认目录。( issue 2005 )

  • 新的 SCHEDULER_DEBUG 设置为日志请求序列化失败( issue 1610 )

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

  • 将``application / json-amazonui-streaming``解释为``TextResponse``(:issue:1503)。

  • scrapy 在使用shell工具时默认导入( shellinspect_response ( issue 2248 )

错误修复¶

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

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

  • ``Selector``不允许再传递``response``和``text``(:issue:2153)。

  • 修复了错误回调名称的日志记录 scrapy parse ( issue 2169 )

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

  • 使用``CrawlSpider``时修复选定的回调:command:scrapy parse <parse>`(:issue:`2225)。

  • 修复蜘蛛不生成任何项时的无效JSON和XML文件( issue 872 )

  • 实施 flush() FPR StreamLogger 避免日志中出现警告( issue 2125 )

重构¶

  • canonicalize_url 已移至 w3lib.url (issue 2168) .

测试和要求¶

Scrapy的新需求基线是Debian8“Jessie”。它以前是Ubuntu12.04精确版。实际上,这意味着我们至少要用这些(主要)包版本运行连续集成测试:twisted 14.0、pyopenssl 0.14、lxml 3.4。

Scrapy可以很好地处理这些包的旧版本(例如,代码库中仍然有用于旧的扭曲版本的开关),但不能保证(因为它不再被测试)。

文档¶

  • 语法修正: issue 2128 , issue 1566 .

  • 从自述文件中删除“下载状态”徽章( issue 2160 )

  • New Scrapy architecture diagram (issue 2165).

  • 更新的 Response 参数文档( issue 2197 )

  • 重新误导:设置:RANDOMIZE_DOWNLOAD_DELAY description(:issue:2190)。

  • 添加stackoverflow作为支持通道( issue 2257 )

Scrapy 1.1.4(2017-03-03)¶

  • 打包修复:禁止在setup.py中支持不受支持的Twisted版本

Scrapy 1.1.3(2016-09-22)¶

错误修复¶

  • “ImagesPipeline”和“FilesPipeline”的子类的类属性与它们在1.1.1之前的作用相同(:issue:2243,fixes:issue:2198

文档¶

  • Overviewtutorial 重写以使用http://toscrape.com网站( issue 2236 , issue 2249 , issue 2252 )

Scrapy 1.1.2(2016-08-18)¶

错误修复¶

  • 引入一个缺失:设置:`IMAGES_STORE_S3_ACL`设置,在将图像上传到S3时覆盖``ImagesPipeline``中的默认ACL策略(请注意,默认的ACL策略是“private”--而不是“public read”--因为scrapy 1.1.0)

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

Scrapy 1.1.1(2016-07-13)¶

错误修复¶

  • 在连接请求到HTTPS代理中添加“主机”头( issue 2069 )

  • 使用响应 body 选择响应类时( issue 2001 修正 issue 2000 )

  • 不要使用错误的netlocs规范化URL(:issue:2038,fixes:issue:2010

  • 修复了``HttpCompressionMiddleware``(和``SitemapSpider``):

    • 不解码HEAD响应(:issue:2008,fixes:issue:1899

    • 在gzip内容类型标题中处理charset参数(:issue:2050,fixes:issue:2049

    • 不要解压缩gzip八位字节流响应(:issue:2065,fixes:issue:2063

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

  • 关于使用遗留类属性进行定制,使``FilesPipeline``和``ImagesPipeline``再次向后兼容(:issue:1989,fixes:issue:1985

新特点¶

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

  • 重试HTTPS连接 TunnelError 默认情况下( issue 1974 )

文档¶

  • FEED_TEMPDIR 设置在词典编纂位置( commit 9b3c72c )

  • 在概述中使用惯用的``.extract_first()``(:issue:1994

  • 在版权公告中的更新年份( commit c2c8036 )

  • 添加有关错误回复的信息和示例( issue 1995 )

  • 在下载器中间件示例中使用“url”变量( issue 2015 )

  • 语法修复(:问题:'2054`,:issue:2120

  • 关于在蜘蛛回调中使用BeautifulSoup的新FAQ条目(:issue:2048

  • 添加关于Scrapy不能在使用Python3的Windows上工作的注释 (issue 2060 )

  • 鼓励拉动请求中的完整标题(:issue:2026

测验¶

  • 将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 支持

  • 热门新功能:

    • 项目加载器现在支持嵌套加载器( issue 1467 )

    • FormRequest.from_response 改进( issue 1382 , issue 1137 )

    • 添加了设置:设置:AUTOTHROTTLE_TARGET_CONCURRENCY`和改进的AutoThrottle文档(:issue:`1324)。

    • 添加了``response.text``以将body作为unicode(:issue:1730)。

    • 匿名S3连接( issue 1358 )

    • 下载器中间件中的延迟( issue 1473 )这样可以更好地处理robots.txt( issue 1471 )

    • HTTP缓存现在更接近于RFC2616,增加了设置 HTTPCACHE_ALWAYS_STOREHTTPCACHE_IGNORE_RESPONSE_CACHE_CONTROLS ( issue 1151 )

    • 选择器被提取到Parsel_u库( issue 1409 )这意味着您可以使用没有scrapy的scrapy选择器,也可以在不需要升级scrapy的情况下升级选择器引擎。

    • 现在,HTTPS下载器默认情况下执行TLS协议协商,而不是强制使用TLS 1.0。您还可以使用新的 DOWNLOADER_CLIENT_TLS_METHOD .

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

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

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

    • 现在,默认情况下,已为新创建的项目启用robots.txt遵从性( issue 1724 )Scrapy还将等待robots.txt下载,然后再继续爬行。( issue 1735 )如果要禁用此行为,请更新 ROBOTSTXT_OBEY 在里面 settings.py 创建新项目后的文件。

    • 导出器现在使用unicode,而不是默认的字节 (issue 1080 )如果你使用 PythonItemExporter ,您可能希望更新代码以禁用二进制模式,但现在已弃用该模式。

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

    • 将文件或图像上载到S3时(使用 FilesPipelineImagesPipeline )默认的acl策略现在是“private”而不是“public”**警告:向后不兼容!**你可以使用 FILES_STORE_S3_ACL 改变它。

    • 我们重新实施了 canonicalize_url() 以获得更正确的输出,尤其是包含非ASCII字符的URL (issue 1947 ). 这可能会改变链接提取器的输出相比以前的破烂版本。这也可能使您在1.1之前的运行中仍然存在的一些缓存项失效。 警告:向后不兼容! .

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

Beta Python 3 支持¶

我们一直在努力使Scrapy在Python 3上运行<https://github.com/scrapy/scrapy/wiki/Python-3-Porting>`_。 因此,现在您可以在Python 3.3,3.4和3.5上运行蜘蛛(需要Twisted> = 15.5)。 某些功能仍然缺失(有些功能可能永远不会被移植)。

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

  • Scrapy不适用于使用python 3的Windows

  • 不支持发送电子邮件

  • 不支持ftp下载处理程序

  • 不支持telnet控制台

其他新功能和增强功能¶

  • Scrapy现在有一个 Code of Conduct (issue 1681) .

  • 命令行工具现在已经完成了zsh( issue 934 )

  • 改进 scrapy shell

    • 支持bpython并通过 SCRAPY_PYTHON_SHELL ( issue 1100 , issue 1444 )

    • 支持没有方案的URL( issue 1498 )**警告:向后不兼容!**

    • 恢复对相对文件路径的支持( issue 1710 , issue 1550 )

  • 补充 MEMUSAGE_CHECK_INTERVAL_SECONDS 更改默认检查间隔的设置( issue 1282 )

  • 下载处理程序现在使用其方案在第一个请求上延迟加载( issue 1390 , issue 1421 )

  • HTTPS下载处理程序不再强制TLS 1.0;相反,OpenSSL的 SSLv23_method()/TLS_method() 用于允许尝试与远程主机协商其可以达到的最高TLS协议版本( issue 1794 , issue 1629 )

  • RedirectMiddleware 现在跳过状态代码 handle_httpstatus_list 蜘蛛属性或 Requestmeta 密钥(密钥) issue 1334 , issue 1364 , issue 1447 )

  • 表格提交:

    • 现在也可以使用``<button>``元素(:issue:1469)。

    • 空字符串现在用于没有值的提交按钮( issue 1472 )

  • 类似dict的设置现在具有每个键的优先级( issue 1135 , issue 1149 和 issue 1586 )

  • 发送非ASCII电子邮件( issue 1662 )

  • CloseSpiderSpiderState 如果没有设置相关设置,扩展现在将被禁用。( issue 1723 , issue 1725 )

  • 添加的方法 ExecutionEngine.close ( issue 1423 )

  • 添加的方法 CrawlerRunner.create_crawler ( issue 1528 )

  • 调度程序优先级队列现在可以通过 SCHEDULER_PRIORITY_QUEUE ( issue 1822 )

  • .pps 默认情况下,链接提取器中的链接现在被忽略。( issue 1835 )

  • 可以使用新的 FEED_TEMPDIR 设置( issue 1847 )

  • FilesPipelineImagesPipeline 设置现在是实例属性而不是类属性,启用特定于蜘蛛的行为( issue 1891 )

  • ``JsonItemExporter``现在在它们自己的行(输出文件的第一行和最后一行)(:issue:1950)上格式化开始和结束方括号。

  • 如果可用,botocore``用于``S3FeedStorage``S3DownloadHandler``和``S3FilesStore``(:issue:1761,:issue:1883)。

  • 大量文档更新和相关修复( issue 1291 , issue 1302 , issue 1335 , issue 1683 , issue 1660 , issue 1642 , issue 1721 , issue 1727 , issue 1879 )

  • 其他重构、优化和清理( issue 1476 , issue 1481 , issue 1477 , issue 1315 , issue 1290 , issue 1750 , issue 1881 )

弃用和移除¶

  • 补充 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 .

重新定位¶

  • telnetconsole 被重新安置到 extensions/ ( issue 1524 )

    • 注意:在python 3上没有启用telnet(https://github.com/scrapy/scrapy/pull/1524 issuecomment-146985595)

错误修正¶

  • Scrapy不会重试 HTTP 400 Bad Request 回复了。( issue 1289 )**警告:向后不兼容!**

  • 支持http_proxy config的空密码( issue 1274 )

  • 解读 application/x-json 作为 TextResponse ( issue 1333 )

  • 支持多值链接rel属性( issue 1201 )

  • 当有一个``<base>``标签(:issue:1564)时,修复了``scrapy.http.FormRequest.from_response``。

  • 修正:设置:TEMPLATES_DIR`处理(:issue:`1575)。

  • 各种各样 FormRequest 修复( issue 1595 , issue 1596 , issue 1597 )

  • 使 _monkeypatches 更健壮( issue 1634 )

  • 修复了``XMLItemExporter``中带有非字符串字段的错误(:issue:1738)。

  • 修正了macOS中的startproject命令 (issue 1635 )

  • 固定的 PythonItemExporter 和CSVExporter用于非字符串项类型 (issue 1737 )

  • 各种与日志相关的修复( issue 1294 , issue 1419 , issue 1263 , issue 1624 , issue 1654 , issue 1722 , issue 1726 和 issue 1303 )

  • 修复了``utils.template.render_templatefile()``(:issue:1212)中的错误。

  • 从``robots.txt``中提取的站点地图现在不区分大小写(:issue:1902)。

  • 当使用多个代理到同一个远程主机时,HTTPS + CONNECT隧道可能会混淆(:issue:1912)。

Scrapy 1.0.7(2017-03-03)¶

  • 打包修复:禁止在setup.py中支持不受支持的Twisted版本

Scrapy 1.0.6(2016-05-04)¶

  • 修正:retrymiddleware现在对非标准的HTTP状态代码是健壮的。( issue 1857 )

  • 修复:文件存储HTTP缓存正在检查错误的修改时间( issue 1875 )

  • DOC:支持Sphinx 1.4+(:issue:1893

  • 文档:选择器示例的一致性( issue 1869 )

Scrapy 1.0.5(2016-02-04)¶

  • FIX:[Backport]忽略LinkExtractors中的伪造链接(修复:问题:907,:commit:108195e

  • TST:更改了buildbot makefile以使用'pytest'(:commit:1f3d90a

  • 文档:修复了教程和媒体管道中的拼写错误( commit 808a9ea 和 commit 803bd87 )

  • 文档:在设置文档中将ajaxcrawlMiddleware添加到下载器中间件库( commit aa94121 )

Scrapy 1.0.4(2015-12-30)¶

  • 忽略xlib/tx文件夹,具体取决于Twisted版本。( commit 7dfa979 )

  • 在新Travis CI Infra上运行( commit 6e42f0b )

  • 拼写修复( commit 823a1cc )

  • 在xmliter regex中转义nodename( commit da3c155 )

  • 用点测试XML节点名( commit 4418fc3 )

  • 测试中不要使用坏Pillow 版本( commit a55078c )

  • 禁用登录版本命令。关闭α1426 commit 86fc330 )

  • 禁用登录StartProject命令( commit db4c9fe )

  • 添加pypi下载状态徽章( commit df2b944 )

  • 如果一个pr是由一个报废/报废的分支生成的,则不要在travis上运行两次测试。( commit a83ab41 )

  • 在自述文件中添加python 3移植状态徽章( commit 73ac80d )

  • 修复了RFPDupeFilter持久性(:commit:97d080e

  • TST显示Dupefilter持久性不起作用的测试( commit 97f2fb3 )

  • 在file://scheme handler上显式关闭文件( commit d9b4850 )

  • 禁用shell中的dupefilter( commit c0d0734 )

  • 文档:向侧边栏中显示的目录树添加标题( commit aa239ad )

  • Doc从安装说明中删除了pywin32,因为它已经声明为依赖项。( commit 10eb400 )

  • 添加了有关在Windows和其他操作系统中使用Conda的安装说明。( commit 1c3600a )

  • 修正了小语法问题。( commit 7f4ddd5 )

  • 修正了文档中的拼写错误。( commit b71f677 )

  • 版本1现在存在( commit 5456c0e )

  • 修复另一个无效的xpath错误( commit 0a1366e )

  • 修复值错误:selectors.rst上的xpath://div/[id=“not exists”]/text()无效( commit ca8d60f )

  • 拼写错误更正( commit 7067117 )

  • 修复downloader-middleware.rst和exceptions.rst中的拼写错误,middlware->middleware( commit 32f115c )

  • 在Ubuntu安装部分添加关于Debian兼容性的说明 (commit 23fda69 )

  • 用virtualenv替代macOS安装解决方案 (commit 98b63ee )

  • 有关安装说明,请参阅自制主页。( commit 1925db1 )

  • 将最旧支持的TOX版本添加到参与文档( commit 5d10d6d )

  • 安装文档中关于pip已经包含在python中的说明>=2.7.9( commit 85c980e )

  • 在文档的Ubuntu安装部分添加非python依赖项( commit fbd010d )

  • 将macOS安装部分添加到文档 (commit d8f4cba )

  • 文档(enh):显式指定RTD主题的路径( commit de73b1a )

  • 次要:scrapy.spider docs语法( commit 1ddcc7b )

  • 使常用实践示例代码与注释匹配( commit 1b85bcf )

  • 下一个重复呼叫(心跳)。( commit 55f7104 )

  • 与Twisted 15.4.0的后端修复兼容性( commit b262411 )

  • 插脚Pytest至2.7.3( commit a6535c2 )

  • 合并请求1512来自mgedmin/patch-1( commit 8876111 )

  • 合并请求1513来自mgedmin/patch-2( commit 5d4daf8 )

  • Typo commit f8d0682 )

  • 修复列表格式( commit 5f83a93 )

  • 修复最近对queuelib的更改后的混乱测试 (commit 3365c01 )

  • 合并请求1475来自RWEindl/Patch-1( commit 2d688cd )

  • 更新tutorial.rst( commit fbc1f25 )

  • 合并请求1449,来自Rhoekman/Patch-1( commit 7d6538c )

  • 小的语法变化( commit 8752294 )

  • 将openssl版本添加到version命令( commit 13c45ac )

Scrapy 1.0.3(2015-08-11)¶

  • 将服务标识添加到Scrapy installu requires (commit cbc2501 )

  • Travis的解决方案296( commit 66af9cd )

Scrapy 1.0.2(2015-08-06)¶

  • Twisted 15.3.0不会引发picklinger或序列化lambda函数( commit b04dd7d )

  • 次要方法名称修复( commit 6f85c7f )

  • 小调:下流。蜘蛛语法和清晰度( commit 9c9d2e0 )

  • 宣传支持渠道( commit c63882b )

  • 拼写错误(:commit:a9ae7b0

  • 修复文档引用。( commit 7c8a4fe )

Scrapy 1.0.1(2015-07-01)¶

  • 在传递到ftpclient之前取消引用请求路径,它已经转义了路径( commit cc00ad2 )

  • 在清单中包括测试/到源分发。( commit eca227e )

  • Doc Fix SelectJMES文档( commit b8567bc )

  • Doc将Ubuntu和ArchLinux带到Windows子部分之外( commit 392233f )

  • DOC从Ubuntu包中删除版本后缀 (commit 5303c66 )

  • 1.0的文档更新发布日期( commit c89fa29 )

Scrapy 1.0.0(2015-06-19)¶

在这个主要版本中,您会发现许多新的特性和错误修复。确保检查我们的更新 overview 看看其中的一些变化,以及我们的刷 tutorial .

支持在spiders中返回字典¶

声明和返回 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)¶

去年的谷歌夏季代码项目完成了一项重要的机制重新设计,用于填充设置,引入明确的优先级来覆盖任何给定的设置。作为该目标的扩展,我们为专门针对单个蜘蛛的设置提供了新的优先级,允许它们重新定义项目设置。

通过定义 custom_settings 蜘蛛中的类变量:

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

阅读有关设置填充的详细信息: 设置

Python 测井¶

Scrapy1.0已经从扭曲的日志记录转移到支持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)¶

上一个谷歌夏季代码的另一个里程碑是对内部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可能会更改,直到达到稳定状态。

请参阅运行scrappy的脚本的更多示例: 常用做法

模块重新定位¶

为了改善 Scrapy 的总体结构,模块进行了大量的重新排列。主要的变化是将不同的子包分离成新的项目,并同时解散这两个项目。 scrapy.contribscrapy.contrib_exp 到顶级包中。内部重新定位之间保持向后兼容性,而导入不推荐使用的模块时会收到指示其新位置的警告。

重新定位的完整列表¶

外包包

注解

这些扩展进行了一些小的更改,例如更改了一些设置名称。请检查每个新存储库中的文档以熟悉新用法。

老位置

新位置

scrapy.commands.deploy

scrapyd-client (见其他备选方案: 部署蜘蛛

scrapy.contrib.djangoitem

scrapy-djangoitem

scrapy.webservice

scrapy-jsonrpc

scrapy.contrib_expscrapy.contrib 溶解

老位置

新位置

scrapy.contribexp.downloadermiddleware.解压缩

scrapy.downloadermiddleware.decompresson

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.dupefilters

scrapy.linkextractor

scrapy.linkextractors

scrapy.spider

scrapy.spiders

scrapy.squeue

scrapy.squeues

scrapy.statscol

scrapy.statscollectors

scrapy.utils.decorator

scrapy.utils.decorators

类重命名

老位置

新位置

scrapy.spidermanager.SpiderManager

scrapy.spiderloader.SpiderLoader

设置重命名

老位置

新位置

SPIDER_MANAGER_CLASS

SPIDER_LOADER_CLASS

Changelog¶

新功能和增强功能

  • Python日志( issue 1060 , issue 1235 , issue 1236 , issue 1240 , issue 1259 , issue 1278 , issue 1286 )

  • FEED_EXPORT_FIELDS选项( issue 1159 , issue 1224 )

  • DNS缓存大小和超时选项( issue 1132 )

  • 支持xmliter?lxml中的命名空间前缀( issue 963 )

  • 反应器线程池最大大小设置( issue 1123 )

  • 允许蜘蛛返回听写。( issue 1081 )

  • 添加response.urljoin()帮助程序( issue 1086 )

  • 在~/.config/scrappy.cfg中查找用户配置( issue 1098 )

  • 处理TLS SNI( issue 1101 )

  • 选择列表先提取( issue 624 , issue 1145 )

  • 添加了jmesselect( issue 1016 )

  • 将gzip压缩添加到文件系统HTTP缓存后端( issue 1020 )

  • 链接提取器中的CSS支持( issue 983 )

  • httpcache不缓存meta 19 689( issue 821 )

  • 添加调度程序丢弃请求时要发送的信号( issue 961 )

  • 避免下载大响应( issue 946 )

  • 允许在csvfeedspider中指定QuoteCar( issue 882 )

  • 添加对“蜘蛛错误处理”日志消息的引用( issue 795 )

  • 处理robots.txt一次( issue 896 )

  • 每个蜘蛛的GSOC设置( issue 854 )

  • 添加项目名称验证( issue 817 )

  • GSOC API清理( issue 816 , issue 1128 , issue 1147 , issue 1148 , issue 1156 , issue 1185 , issue 1187 , issue 1258 , issue 1268 , issue 1276 , issue 1285 , issue 1284 )

  • 对IO操作的响应能力更强( issue 1074 和 issue 1075 )

  • 关闭时对httpcache执行leveldb压缩( issue 1297 )

弃用和移除

  • 取消预测htmlparser链接提取程序( issue 1205 )

  • 从FeedExporter中删除已弃用的代码( issue 1155 )

  • 用于.15兼容性的剩余部分( issue 925 )

  • 放弃对每个蜘蛛并发请求的支持( issue 895 )

  • 删除旧的发动机代码( issue 911 )

  • 拆除SGMLLinkextractor( issue 777 )

重新定位

  • 将exporters/uuu init_uuu.py移动到exporters.py( issue 1242 )

  • 将基类移动到其包中( issue 1218 , issue 1233 )

  • 模块重新定位( issue 1181 , issue 1210 )

  • 将spiderManager重命名为spiderLoader( issue 1166 )

  • 移除Djangoitem( issue 1177 )

  • 删除报废部署命令( issue 1102 )

  • 解除控制( issue 1134 )

  • 已从根目录中删除bin文件夹,修复913( issue 914 )

  • 删除基于JSONRPC的WebService( issue 859 )

  • 在项目根目录下移动测试用例( issue 827 , issue 841 )

  • 修复设置中重新定位路径的向后不兼容性( issue 1267 )

文档

  • 爬虫过程文档( issue 1190 )

  • 在描述中倾向于使用Web抓取而不是屏幕抓取( issue 1188 )

  • 对Scrapy教程的一些改进( issue 1180 )

  • 将文件管道与图像管道一起记录( issue 1150 )

  • 部署文档调整( issue 1164 )

  • 增加了部署部分,包括 Scrapy 部署和SHUB( issue 1124 )

  • 向项目模板添加更多设置( issue 1073 )

  • 概述页面的一些改进( issue 1106 )

  • 更新了docs/topics/architecture.rst中的链接( issue 647 )

  • 文档重新排序主题( issue 1022 )

  • 更新request.meta特殊键列表( issue 1071 )

  • 文档下载超时( issue 898 )

  • 文档简化扩展文档( issue 893 )

  • 泄漏文档 issue 894 )

  • 项目管道的爬虫方法的文档( issue 904 )

  • 蜘蛛网错误不支持延迟( issue 1292 )

  • 更正和Sphinx相关的修复程序( issue 1220 , issue 1219 , issue 1196 , issue 1172 , issue 1171 , issue 1169 , issue 1160 , issue 1154 , issue 1127 , issue 1112 , issue 1105 , issue 1041 , issue 1082 , issue 1033 , issue 944 , issue 866 , issue 864 , issue 796 , issue 1260 , issue 1271 , issue 1293 , issue 1298 )

错误修正

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

  • ItemLoader.load_item:迭代字段副本( issue 722 )

  • 修复延迟(robotstxtmiddleware)中未处理的错误( issue 1131 , issue 1197 )

  • 强制读取下载超时为int( issue 954 )

  • scrapy.utils.misc.load_对象应打印完整的回溯( issue 902 )

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

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

  • 修复在meta设置为false时不合并cookies的不良行为( issue 846 )

Python 3 进行中支持

  • 如果twisted.conch不可用,则禁用scrappy.telnet( issue 1161 )

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

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

  • 在Python3中,AssertItemSequal被重命名为AssertCountEqual。( issue 1070 )

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

  • 更新了不推荐使用的cgi.parse_qsl以使用six的parse_qsl( issue 909 )

  • 防止python 3端口回归( issue 830 )

  • PY3:对python 3使用可变映射( issue 810 )

  • PY3:使用six.bytesio和six.moves.cstringio( issue 803 )

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

  • PY3:使用6个用于robotparser和urlparse( issue 800 )

  • PY3:使用6.iterkeys、6.iteritems和tempfile( issue 799 )

  • PY3:fix有_键并使用six.moves.configparser( issue 798 )

  • PY3:使用six.moves.cpickle( issue 797 )

  • PY3使在python3中运行一些测试成为可能( issue 776 )

测验

  • 从PY3中删除不必要的行忽略( issue 1243 )

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

  • 将文档生成添加到Travis( issue 1234 )

  • TST不从不推荐使用的模块收集测试。( issue 1165 )

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

  • 修复测试中不推荐使用的设置API( issue 1152 )

  • 使用post方法为WebClient添加测试,但未提供主体( issue 1089 )

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

  • 使一些主张现代化( issue 835 )

  • 选择器。重复测试( issue 779 )

代码重构

  • CSVFeedspider清理:使用迭代蜘蛛网输出( issue 1079 )

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

  • 派送PEP8( issue 992 )

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

  • 为了保持一致,请使用 job_dir 帮手 SpiderState 延伸。( issue 805 )

  • 将“sflo”局部变量重命名为不那么神秘的“log_observer”( issue 775 )

Scrapy 0.24.6(2015-04-20)¶

  • 使用py2下的unicode_转义对无效的xpath进行编码( commit 07cb3e5 )

  • 修复ipython shell作用域问题并加载ipython用户配置( commit 2c8e573 )

  • 修复文档中的小错误( commit d694019 )

  • 修复小错字(:commit:f92fa83

  • 在提取数据时已将sel.xpath()调用转换为response.xpath()。( commit c2c6d15 )

Scrapy 0.24.5(2015-02-25)¶

  • 在Twisted 15.0.0上支持新的getEndpoint代理签名( commit 540b9bc )

  • 多了几个参考文献( commit b4c454b )

  • 文档修复引用( commit e3c1260 )

  • t.i.b.ThreadeDresolver现在是一个新的类( commit 9e13f42 )

  • S3DownloadHandler:修复带引用路径/查询参数的请求的身份验证( commit cdb9a0b )

  • 修复了mailsender文档中的变量类型( commit bb3a848 )

  • 重置项目而不是项目计数( commit edb07a4 )

  • 关于阅读什么文件供贡献的暂定注意信息( commit 7ee6f7a )

  • mitmproxy 0.10.1也需要Netlib 0.10.1( commit 874fcdd )

  • 销Mitmproxy 0.10.1 as>0.11不适用于测试( commit c6b21f0 )

  • 在本地测试parse命令,而不是针对外部URL( commit c3a6628 )

  • 关闭httpDownloadHandler上的连接池时出现补丁扭曲问题( commit d0bf957 )

  • 更新动态项类的文档。( commit eeb589a )

  • 来自Lazar-T/Patch-3的合并请求943( commit 5fdab02 )

  • 错字(:commit:b0ae199

  • twisted需要pywin32。关闭α937 commit 5cb0cfb )

  • 更新install.rst( commit 781286b )

  • 来自Lazar-T/Patch-1的合并请求928( commit b415d04 )

  • 逗号而不是句号( commit 627b9ba )

  • 合并请求885来自JSMA/Patch-1( commit de909ad )

  • 更新request-response.rst( commit 3f3263d )

  • BaseSgmlLinkExtractor:用于解析存在unicode的<area>标记的修复程序( commit 49b40f0 )

Scrapy 0.24.4(2014-08-09)¶

  • mockserver使用PEM文件,scrapy bench需要。( commit 5eddc68 )

  • 下脚料台需要下脚料。测试*( commit d6cb999 )

Scrapy 0.24.3(2014-08-09)¶

  • 无需在PY3上浪费Travis CI时间0.24( commit 8e080c1 )

  • 更新安装文档( commit 1d0c096 )

  • 有一个特洛夫分类器为 Scrapy 框架!( commit 4c701d7 )

  • 更新提到w3lib版本的其他位置( commit d109c13 )

  • 将w3lib要求更新为1.8.0( commit 39d2ce5 )

  • 使用w3lib.html.replace_entities()(不推荐使用remove_entities())( commit 180d3ad )

  • 设置zip_safe=false( commit a51ee8b )

  • 不装运测试包( commit ee3b371 )

  • 不再需要scrappy.bat( commit c3861cf )

  • 现代化设置.py( commit 362e322 )

  • 头不能处理非字符串值( commit 94a5c65 )

  • 修复FTP测试用例( commit a274a7f )

  • Travis CI构建的总结大约需要50分钟才能完成。( commit ae1e2cc )

  • 更新shell.rst typo( commit e49c96a )

  • 删除shell结果中的奇怪缩进( commit 1ca489d )

  • 改进了解释,澄清了博客文章的来源,在规范中添加了xpath字符串函数的链接( commit 65c8f05 )

  • 已重命名usertimeouterrror和servertimeouterrror 583( commit 037f6ab )

  • 向选择器文档添加一些XPath提示( commit 2d103e0 )

  • 修复测试以解释https://github.com/scrappy/w3lib/pull/23( commit f8d366a )

  • 获取_func_参数最大递归修复728( commit 81344ea )

  • 根据560更新输入/输出处理器示例。( commit f7c4ea8 )

  • 修复了教程中的python语法。( commit db59ed9 )

  • 为隧道代理添加测试用例( commit f090260 )

  • 使用隧道时将代理授权头泄漏到远程主机的错误修复( commit d8793af )

  • 从具有mime类型“application/xml”的xhtml文档中提取链接( commit ed1f376 )

  • 合并请求来自Roysc/Patch-1的793( commit 91a1106 )

  • 修复commands.rst中的拼写错误( commit 743e1e2 )

  • settings.overrides.setdefault的更好测试用例( commit e22daaf )

  • 根据HTTP 1.1定义使用CRLF作为行标记( commit 5ec430b )

Scrapy 0.24.2(2014-07-08)¶

  • 使用可变映射来代理不推荐使用的设置。overrides和settings.defaults属性( commit e5e8133 )

  • 尚未支持python3( commit 3cd6146 )

  • 将python兼容版本集更新为Debian包 (commit fa5d76b )

  • 发行说明中的文档修复格式( commit c6a9e20 )

Scrapy 0.24.1(2014-06-27)¶

  • 修复不推荐使用的Crawlersettings并提高与.defaults属性的向后兼容性( commit 8e3f20a )

Scrapy 0.24.0(2014-06-26)¶

增强功能¶

  • 改进残缺的顶级命名空间( issue 494 , issue 684 )

  • 向响应添加选择器快捷方式( issue 554 , issue 690 )

  • 添加新的基于lxml的LinkExtractor以替换未维护的SgmlLinkExtractor (issue 559 , issue 761 , issue 763 )

  • 清理设置API-每个蜘蛛设置的一部分 GSoC project ( issue 737 )

  • 将utf8编码头添加到模板( issue 688 , issue 762 )

  • Telnet控制台现在默认绑定到127.0.0.1( issue 699 )

  • 更新Debian/Ubuntu安装说明 (issue 509 , issue 549 )

  • 禁用LXML XPath计算中的智能字符串( issue 535 )

  • 将基于文件系统的缓存还原为HTTP缓存中间件的默认缓存( issue 541 , issue 500 , issue 571 )

  • 将当前爬行器暴露在 Scrapy 壳中( issue 557 )

  • 改进测试套件,比较csv和xml导出器( issue 570 )

  • 新的 offsite/filteredoffsite/domains 统计数据(统计) issue 566 )

  • 在Crawlspiper中支持进程链接作为生成器( issue 555 )

  • DupeFilter的详细日志记录和新统计计数器( issue 553 )

  • 将mimetype参数添加到 MailSender.send() ( issue 602 )

  • 通用化文件管道日志消息( issue 622 )

  • 用sgmlinkextractor中的HTML实体替换不可编码的代码点( issue 565 )

  • 已将SEP文档转换为RST格式( issue 629 , issue 630 , issue 638 , issue 632 , issue 636 , issue 640 , issue 635 , issue 634 , issue 639 , issue 637 , issue 631 , issue 633 , issue 641 , issue 642 )

  • 用于表单请求中ClickData的nr索引的测试和文档( issue 646 , issue 645 )

  • 允许像禁用任何其他组件一样禁用下载程序处理程序( issue 650 )

  • 在重定向过多后放弃请求时记录( issue 654 )

  • 如果蜘蛛回调不处理错误响应,则记录错误响应( issue 612 , issue 656 )

  • 向HTTP压缩mw添加内容类型检查( issue 193 , issue 660 )

  • 使用来自ppa的最新pypi运行pypypy测试( issue 674 )

  • 使用pytest而不是trial运行测试套件( issue 679 )

  • 建立文档并检查毒物环境中的死链接( issue 687 )

  • 使scrappy.versionu info成为整数的元组( issue 681 , issue 692 )

  • 从文件扩展名推断导出程序的输出格式( issue 546 , issue 659 , issue 760 )

  • 在中支持不区分大小写的域 url_is_from_any_domain() ( issue 693 )

  • 删除项目和Spider模板中的PEP8警告( issue 698 )

  • 测试和文档 request_fingerprint 功能( issue 597 )

  • GSOC项目9月19日更新 per-spider settings ( issue 705 )

  • 合同失败时,将退出代码设置为非零( issue 727 )

  • 添加一个设置来控制实例化为下载程序组件的类 (issue 738 )

  • 传入响应 item_dropped 信号(信号) issue 724 )

  • 改进 scrapy check 合同指挥部( issue 733 , issue 752 )

  • 文件 spider.closed() 快捷方式(捷径” issue 719 )

  • 文件 request_scheduled 信号(信号) issue 746 )

  • 添加有关报告安全问题的说明( issue 697 )

  • 添加LevelDB HTTP缓存存储后端( issue 626 , issue 500 )

  • 排序蜘蛛列表输出 scrapy list 命令( issue 742 )

  • 多个文档增强和修复 (issue 575 , issue 587 , issue 590 , issue 596 , issue 610 , issue 617 , issue 618 , issue 627 , issue 613 , issue 643 , issue 654 , issue 675 , issue 663 , issue 711 , issue 714 )

错误修正¶

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

  • 忽略项加载器处理器中的无值( issue 556 )

  • 当sgmlinkxtractor和htmlparserlinkextractor中存在内部标记时修复链接文本( issue 485 , issue 574 )

  • 修复对已弃用类的子类的错误检查( issue 581 , issue 584 )

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

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

  • 修复类型()的动态项类示例用法( issue 603 )

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

  • 将sgmlinkextractor中attrs参数的默认值固定为tuple( issue 661 )

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

  • 修复引擎以支持筛选的启动请求( issue 707 )

  • 在没有主机名的URL上修复非现场中间件案例( issue 745 )

  • 测试套件不再需要PIL( issue 585 )

Scrapy 0.22.2(2014-02-14发布)¶

  • 修复对不存在的engine.slots的引用。关闭α593 commit 13c099a )

  • 下载ermw-doc-typo(spidermw-doc-copy-remark)( commit 8ae11bf )

  • 正确的拼写错误 commit 1346037 )

Scrapy 0.22.1(2014-02-08发布)¶

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

  • 测试检查。堆栈故障( commit cc3eda3 )

  • 当inspect.stack()失败时处理案例( commit 8cb44f9 )

  • 修复对已弃用类的子类的错误检查。关闭α581 commit 46d98d6 )

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

  • 修复htmlparserlinktextractor并在485合并后进行测试( commit 368a946 )

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

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

  • BaseSgmlLinkExtractor:修复了未知的_end tag(),以便在结束标记与开始标记匹配时只设置当前的_link=none( commit 7e4d627 )

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

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

  • Regexlinkextractor:创建链接时编码URL Unicode值( commit d0ee545 )

  • 用最新的输出更新了教程的爬行输出。( commit 8da65de )

  • 使用爬虫引用更新了shell文档,并修复了实际shell输出。( commit 875b9ab )

  • PEP8小编辑。( commit f89efaf )

  • 暴露当前爬虫在破烂的外壳。 (commit 5349cec )

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

  • 使用itemloader时忽略none的值。( commit 0632546 )

  • Doc修复了默认值中的httpcache_存储错误,该默认值现在是filesystem而不是dbm。( commit cde9a8c )

  • 将Ubuntu安装说明显示为文本代码 (commit fb5c9c5 )

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

  • 合并请求550来自Missist Leone/Patch-1( commit 6f70b6a )

  • 修改scray 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

  • 使用connect方法的代理服务器https://urls( issue 392 , issue 397 )

  • 添加一个中间件来对由Google定义的Ajax可爬行页面进行爬行。( issue 343 )

  • 将scrapy.spider.basespider重命名为scrapy.spider.spider( issue 510 , issue 519 )

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

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

  • 制作 RFPDupeFilter 类容易子类化( issue 533 )

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

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

  • 支持部分 get_func_args 乌蒂尔 issue 506 ,问题:“504”

  • 允许通过毒物进行单独测试 (issue 503 )

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

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

  • 改进非现场中间件测试( issue 478 )

  • 添加一种跳过由refermiddleware设置的默认referer头的方法( issue 475 )

  • 请勿发送 x-gzip 默认情况下 Accept-Encoding 报头( issue 469 )

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

  • 使用现代的python习惯用法,无论你在哪里找到遗产( issue 497 )

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

修正¶

  • 更新Crawlspiper模板中的选择器类导入( issue 484 )

  • 修复不存在的引用 engine.slots ( issue 464 )

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

  • 在XpathitemLoader子类化时发出警告,以前它只在实例化时发出警告。( issue 523 )

  • 在XpathSelector子类化时发出警告,以前它只在实例化时发出警告。( issue 537 )

  • 对内存状态的多个修复( issue 531 , issue 530 , issue 529 )

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

  • 在PIP 1.5下修复测试运行程序( issue 513 )

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

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

  • 使用选择器更改更新Crawlspiper模板( commit 6d1457d )

  • 在教程中修复方法名。关闭GH-480(GH-480) commit b4fc359

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

  • 包含u软件包u从发布的源代码构建车轮需要数据( commit 5ba1ad5 )

  • 进程并行正在泄漏内部延迟的故障。关闭α458 commit 419a780 )

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

增强功能¶

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

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

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

  • SitemapSpider可以获取备用URL( issue 360 )

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

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

  • 使用具有嵌套支持的本机python类型的新项导出器( issue 366 )

  • 调整http1.1池大小,使其与设置定义的并发性匹配( commit b43b5f575 )

  • scrappy.mail.mailsender现在可以通过tls连接或使用starttls升级( issue 327 )

  • 从ImageSpipeline中分解出功能的新文件管道( issue 370 , issue 409 )

  • 建议用枕头代替PIL来处理图像( issue 317 )

  • 为Ubuntu Quantal和Raring添加了Debian包 (commit 86230c0 )

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

  • 从多个核心组件上拆下多个十字轴支架( issue 422 , issue 421 , issue 420 , issue 419 , issue 423 , issue 418 )

  • Travis CI现在根据开发版本测试 Scrapy 更改 w3libqueuelib python包。

  • 将PYPY 2.1添加到持续集成测试中( commit ecfa7431 )

  • Pylinted、pep8并从源中删除了旧样式异常( issue 430 , issue 432 )

  • 将importlib用于参数导入( issue 445 )

  • 处理python 2.7.5中引入的影响xmlItemExporter的回归( issue 372 )

  • 修正了SIGINT上的爬行关闭( issue 450 )

  • 不提交 reset 在FormRequest.From响应中键入输入( commit b326b87 )

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

错误修正¶

  • 在Django 1.6下修复测试( commit b6bed44c )

  • 使用HTTP1.1下载处理程序在断开连接的情况下重试中间件的许多错误修复

  • 修复Twisted版本之间的不一致(:issue:406

  • 修复破烂的外壳缺陷 (issue 418 , issue 407 )

  • 修复setup.py中的无效变量名( issue 429 )

  • 修复教程引用( issue 387 )

  • 改进请求响应文档( issue 391 )

  • 改进最佳实践文档( issue 399 , issue 400 , issue 401 , issue 402 )

  • 改进Django集成文档( issue 404 )

  • 文件 bindaddress 请求元 commit 37c24e01d7 )

  • 改进 Request 类文档( issue 226 )

其他¶

  • 删除Python 2.6支持(:issue:448

  • 添加 cssselect python包作为安装依赖项

  • 删除libxml2和多选择器的后端支持, lxml 从现在开始是必需的。

  • 最小扭曲版本增加到10.0.0,下降扭曲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拒绝更新命名空间。FixY 396 commit 3d32c4f )

  • 修复alreadycallederror替换shell命令中的请求。关闭α407 commit b1d8919 )

  • 修复启动请求延迟和提前挂起( commit 89faf52 )

Scrapy 0.18.3(2013-10-03发布)¶

  • 修复对启动请求的延迟评估的回归( commit 12693a5 )

  • 表单:不提交重置输入( commit e429f63 )

  • 增加UnitTest超时以减少Travis假阳性故障( commit 912202e )

  • json导出器的后台主修复程序( commit cfc2d46 )

  • 在生成sdist tarball之前,修复权限并设置umask( commit 06149e0 )

Scrapy 0.18.2(2013-09-03发布)¶

  • 后端 scrapy check 命令修复和向后兼容的多爬虫进程( issue 339 )

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

  • 删除由cherry-picked更改添加的额外导入( commit d20304e )

  • 在twisted pre 11.0.0下修复爬行测试( commit 1994f38 )

  • pY26不能格式化零长度字段( commit abf756f )

  • 测试未绑定响应的潜在数据丢失错误( commit b15470d )

  • 将没有内容长度或传输编码的响应视为良好响应( commit c4bf324 )

  • 如果未启用http11处理程序,则不包括responsefailed( commit 6cbe684 )

  • 新的HTTP客户端在ResponseFiled异常中包装连接丢失。修复373 (commit 1a20bba )

  • 限制Travis CI构建矩阵( commit 3b01bb8 )

  • 合并请求375来自Peterarenot/Patch-1( commit fa766d7 )

  • 已修复,因此它引用了正确的文件夹( commit 3283809 )

  • 添加了Quantal&Raring来支持Ubuntu版本 (commit 1411923 )

  • 修复在升级到http1客户端后没有重试某些连接错误的重试中间件,关闭GH-373( commit bb35ed0 )

  • 在python 2.7.4和2.7.5中修复xmlItemExporter( commit de3e451 )

  • 0.18发行说明的小更新( commit c45e5f1 )

  • 修正贡献者列表格式 (commit 0b60031 )

Scrapy 0.18.0(2013-08-09发布)¶

  • 使用tox对testsuite运行进行了很多改进,包括在pypi上进行测试的方法

  • 处理Ajax可爬行URL的get参数( commit 3fe2a32 )

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

  • 错误修复cookie按主机名而不是按netloc合并( issue 352 )

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

  • 使用支持XML命名空间 iternodes 语法分析器 XMLFeedSpider ( issue 12 )

  • 支持 dont_cache 请求元标志( issue 19 )

  • 修正错误 scrapy.utils.gz.gunzip 被python 2.7.4中的更改打断( commit 4dc76e )

  • 错误修复上的URL编码 SgmlLinkExtractor ( issue 24 )

  • 修正错误 TakeFirst 处理器不应丢弃零(0)值( issue 59 )

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

  • 提高cookie处理性能( issue 77 )

  • 记录重复筛选的请求一次( issue 105 )

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

  • 使用http1.1作为默认的下载程序处理程序( issue 109 和 issue 318 )

  • 支持上的XPath表单选择 FormRequest.from_response ( issue 185 )

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

  • Pypi解释器上的错误修复信号调度( issue 205 )

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

  • 将rfc2616缓存策略添加到 HttpCacheMiddleware ( issue 212 )

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

  • 多方面的改进 DjangoItem ( issue 217 , issue 218 , issue 221 )

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

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

  • 支持 settings.getdict ( issue 269 )

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

  • 补充 Item.copy ( issue 290 )

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

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

  • 添加了Downloader Benchmark Web服务器和Spider工具 标杆管理

  • 已将永久(磁盘上)队列移动到单独的项目 (queuelib) 现在要看哪一个了

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

  • 补充 --pdb 选择权 scrapy 命令行工具

  • 补充 XPathSelector.remove_namespaces 它允许从XML文档中删除所有名称空间以方便(使用不含名称空间的xpaths)。记录在 选择器 .

  • 蜘蛛合约的几个改进

  • 名为metarefreshmiddldeware的新默认中间件,用于处理meta refresh html标记重定向,

  • MetaRefreshMiddlDeware和RedirectMiddleware有不同的优先级来解决62

  • 从爬虫方法添加到蜘蛛

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

  • macOS兼容性的更多改进(感谢Alex Cepoi)

  • 多个单件清洁和多蜘蛛支持(感谢Nicolas Ramirez)

  • 支持自定义下载插槽

  • 在“shell”命令中添加了--spider选项。

  • 当scray启动时记录重写的设置

感谢所有为这次发布做出贡献的人。以下是按提交次数排序的参与者列表:

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 )

  • 修复不准确的下载器中间件文档。参考文献280 commit 40667cb )

  • 文档:删除diveintopython.org的链接,该链接不再可用。关闭α246 commit bd58bfa )

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

  • 修正了错误的标签属性类型bool而不是list( commit a274276 )

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

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

  • 添加关于禁用扩展的文档。参考文献132 commit c90de33 )

  • 已修复错误消息格式。log.err()不支持酷格式,出现错误时,消息为:“错误:错误处理%(item)s”( commit c16150c )

  • 整理和改进图像管道错误记录( commit 56b45fc )

  • 固定文档错误( commit 243be84 )

  • 添加文档主题:广泛的爬网和常见做法 (commit 1fbb715 )

  • 修复Scrapy parse命令中未显式指定spider时的错误。关闭#209 (commit c72e682 )

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

Scrapy 0.16.3(2012-12-07发布)¶

  • 在使用下载延迟时删除并发限制,并仍然确保强制执行请求间延迟( commit 487b9b5 )

  • 当图像管道失败时添加错误详细信息( commit 8232569 )

  • 提高macOS兼容性 (commit 8dcf8aa )

  • setup.py:使用readme.rst填充long_描述( commit 7b5310d )

  • 文档:删除了对ClientForm的过时引用( commit 80f9bb6 )

  • 为默认存储后端更正文档( commit 2aa491b )

  • 文档:从常见问题解答中删除了断开的proxyhub链接( commit bdf61c4 )

  • SpiderOpenCloseLogging示例中的固定文档拼写错误( commit 7184094 )

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

  • 废合同:python2.6compat (commit a4a9199 )

  • 废合同详细选项 (commit ec41673 )

  • 废合同的正确的类unittest输出 (commit 86635e4 )

  • 在调试文档中添加了“在浏览器中打开”( commit c9b690d )

  • 从设置文档中删除对全局碎片统计的引用 (commit dd55067 )

  • 修复Windows平台中的spiderstate错误( commit 58998f4 )

Scrapy 0.16.1(2012-10-26发布)¶

  • 修复了logstats扩展,它在0.16版本之前的错误合并后被破坏。( commit 8c780fd )

  • 更好地向后兼容scrapy.conf.settings( commit 3403089 )

  • 有关如何从扩展访问爬虫统计信息的扩展文档( commit c4da0b5 )

  • 删除了.hgtag(由于Scrapy使用git,不再需要) (commit d52c188 )

  • 固定RST标题下的破折号( commit fa4f7f9 )

  • 在新闻中设置0.16.0的发布日期( commit e292246 )

Scrapy 0.16.0(2012-10-18发布)¶

零星变化:

  • 补充 蜘蛛合约 以正式/可复制的方式测试蜘蛛的机制

  • 增加选项 -o-trunspider 命令

  • 文件化的 AutoThrottle 扩展 并添加到默认安装的扩展。您仍然需要启用它 AUTOTHROTTLE_ENABLED

  • 主要统计数据收集重构:删除全局/每个蜘蛛统计数据的分离,删除与统计数据相关的信号( stats_spider_opened 等)。统计信息现在要简单得多,在统计信息收集器API和信号上保持向后兼容性。

  • 补充 process_start_requests() 蜘蛛中间商的方法

  • 信号掉了。现在应该可以通过爬虫信号属性。有关更多信息,请参阅信号文档。

  • 删除了统计收集器singleton。现在可以通过crawler.stats属性访问状态。有关详细信息,请参阅统计信息收集文档。

  • 文件化的 核心API

  • lxml is now the default selectors backend instead of libxml2

  • 将formRequest.from_response()移植到 lxml 而不是 ClientForm

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

  • SiteMapSpider:添加了对以.xml和.xml.gz结尾的站点地图URL的支持,即使它们公布了错误的内容类型( commit 10ed28b )

  • Stacktracedump扩展:同时转储trackref活动引用( commit fe2ce93 )

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

  • 补充 cookiejar 请求meta-key以支持每个spider的多个cookie会话

  • 去耦编码检测码 w3lib.encoding 并移植了一些垃圾代码以使用该模块

  • 放弃了对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)

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

  • 根据蜘蛛设置删除(替换为实例化多个爬行器对象)

  • USER_AGENT 蜘蛛属性将不再工作,请使用 user_agent 改为属性

  • DOWNLOAD_TIMEOUT 蜘蛛属性将不再工作,请使用 download_timeout 改为属性

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

  • 升级:ref:`topics-djangoitem`到main contrib

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

  • 下载程序处理程序 (DOWNLOAD_HANDLERS 设置)现在接收设置作为 __init__ 方法

  • 已将内存使用率替换为(更便携) resource 移除模块 scrapy.utils.memory 模块

  • 删除信号: scrapy.mail.mail_sent

  • 删除``TRACK_REFS``设置,现在:ref:`trackrefs <topics-leaks-trackrefs>`总是被启用

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

  • 日志消息的数量(每个级别)现在通过 Scrapy 统计(stat name: log_count/LEVEL

  • 接收到的响应数现在通过scrapy stats(stat name: response_received_count

  • 删除了``scrapy.log.started``属性

Scrapy 0.14.4¶

  • 为支持的Ubuntu发行版添加了precise (commit b7e46df )

  • 修复了在https://groups.google.com/forum/中报告的json-rpc-webservice中的错误!主题/垃圾用户/QGVBMFYBNAQ/讨论。也从extras/scrapy-ws.py中删除了不再支持的“run”命令( commit 340fbdb )

  • 内容类型http equiv的元标记属性可以是任意顺序。(123) commit 0cb68af )

  • 将“导入图像”替换为更标准的“从PIL导入图像”。关闭α88 commit 4d17048 )

  • 将试用状态返回为bin/runtests.sh exit值。(118) commit b7b2e7f )

Scrapy 0.14.3¶

  • 忘记包含PyDispatch许可证。(118) commit fd85f9c )

  • 包括testsuite在源分发中使用的egg文件。(118) commit c897793 )

  • 更新项目模板中的docstring以避免与genspider命令混淆,这可能被视为高级功能。参考文献107 commit 2548dcc )

  • 在docs/topics/firebug.rst中添加了关于关闭google目录的注释( commit 668e352 )

  • 空的时候不要丢弃插槽,只需保存在另一个dict中,以便在需要时循环使用。 (commit 8e9f607 )

  • 在支持libxml2的选择器中处理unicode xpaths不会失败( commit b830e95 )

  • 修正了请求对象文档中的小错误( commit bf3c9ee )

  • 修复了链接提取器文档中的次要缺陷( commit ba14f38 )

  • 在scray中删除了一些与sqlite支持相关的过时代码 (commit 0665175 )

Scrapy 0.14.2¶

  • 在计算校验和之前,移动指向文件开头的缓冲区。参考文献92 commit 6a5bef2 )

  • 在保存图像之前计算图像校验和。关闭α92 commit 9817df1 )

  • 删除缓存失败中的泄漏引用( commit 673a120 )

  • 修正了memoryusage扩展中的错误:get_engine_status()只接受1个参数(给定0)( commit 11133e9 )

  • 修复了HTTP压缩中间件上的struct.error。关闭α87 commit 1423140 )

  • ajax爬网没有扩展Unicode URL( commit 0de3fb4 )

  • Catch start_请求迭代器错误。参考文献83 commit 454a21d )

  • 加速libxml2 xpathselector( commit 2fbd662 )

  • 根据最近的更改更新版本文档( commit 0a070f5 )

  • scrapyd:修复文档链接( commit 2b4e4c3 )

  • extras/makedeb.py:不再从git获取版本( commit caffe0e )

Scrapy 0.14.1¶

  • extras/makedeb.py:不再从git获取版本( commit caffe0e )

  • 缓冲版本为0.14.1( commit 6cb9e1c )

  • 修复了对教程目录的引用( commit 4b86bd6 )

  • 文档:从request.replace()中删除了重复的回调参数( commit 1aeccdd )

  • 修复了scrapyd doc(:commit:8bf19e6)的格式

  • 为所有正在运行的线程转储堆栈并修复StackTraceDump扩展转储的引擎状态( commit 14a8e6e )

  • 添加了关于为什么我们在boto图像上传上禁用SSL的注释( commit 5223575 )

  • 当与S3进行太多并行连接时,SSL握手挂起( commit 63d583d )

  • 更改教程以跟踪dmoz网站上的更改( commit bcb3198 )

  • 避免在Twisted中出现断开连接的deferred attributeerror异常>=11.1.0( commit 98f3f87 )

  • 允许spider设置autothrottle最大并发性( commit 175a4b5 )

Scrapy 0.14¶

新功能和设置¶

  • 支持 AJAX crawleable urls

  • 在磁盘上存储请求的新的永久性计划程序,允许挂起和恢复爬网( r2737 )

  • 在``scrapy crawl``中添加了``-o``选项,这是将已删除项目转储到文件中的快捷方式(或使用``-``标准输出)

  • 添加了对自定义设置传递给Scrapyd``recation.json`` api(:rev:2779,:rev:2783)的支持

  • 新的 ChunkedTransferMiddleware (默认启用)以支持 chunked transfer encoding (r2769)

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

  • 补充 marshal to formats supported by feed exports (r2744)

  • 在请求错误回复中,有问题的请求现在接收到 failure.request 属性(属性) r2738 )

  • 大下载重构以支持每个域/IP并发限制( r2732 )
    • CONCURRENT_REQUESTS_PER_SPIDER 设置已被弃用,并替换为:
      • CONCURRENT_REQUESTS, CONCURRENT_REQUESTS_PER_DOMAIN, CONCURRENT_REQUESTS_PER_IP

    • 查看文档了解更多详细信息

  • 添加了内置缓存DNS解析程序( r2728 )

  • 将与Amazon AWS相关的组件/扩展(sqs spider queue,simpledb stats collector)移动到单独的项目:[scaws](https://github.com/scrapinghub/scaws)( r2706 , r2714 )

  • 已将spider队列移动到scrapyd: scrapy.spiderqueue > scrapyd.spiderqueue ( r2708 )

  • 已将sqlite utils移动到scrapyd: scrapy.utils.sqlite > scrapyd.sqlite ( r2781 )

  • 对返回迭代器的真正支持 start_requests() 方法。当蜘蛛空闲时,迭代器现在在爬行过程中被消耗。( r2704 )

  • 补充 REDIRECT_ENABLED 快速启用/禁用重定向中间件的设置( r2697 )

  • 补充 RETRY_ENABLED 设置为快速启用/禁用重试中间件( r2694 )

  • 补充 CloseSpider 手动关闭星形齿轮的例外情况( r2691 )

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

  • 重构CloseSpider行为,等待所有下载完成并由Spider处理,然后关闭Spider( r2688 )

  • 补充 SitemapSpider (见Spiders页面中的文档)( r2658 )

  • 补充 LogStats 用于定期记录基本统计信息(如已爬网页和已擦除项)的扩展( r2657 )

  • 使gzipped响应的处理更加可靠(319, r2643 )现在,scrappy将尝试尽可能多地从gzip响应中解压缩,而不是使用 IOError .

  • 简化!memoryDebugger扩展,用于转储内存调试信息( r2639 )

  • 添加了编辑蜘蛛的新命令:scrapy edit``(:rev:`2636`)和-e``标志到``genspider``命令使用它(:rev:2653

  • 将项目的默认表示更改为精美打印的dicts。(启:2631)。 对于Scraped和Dropped行,在默认情况下使日志更具可读性,从而改进了默认日志记录。

  • 补充 spider_error 信号(信号) r2628 )

  • 补充:设置:COOKIES_ENABLED`设置(:rev:`2625

  • 现在,Stats被转储到Scrapy日志中(默认值:setting:`STATS_DUMP`设置已更改为“True”。)。 这是为了让Scrapy用户更加了解Scrapy统计数据以及在那里收集的数据。

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

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

  • 补充 listjobs.json API到ScrapyDy( r2571 )

  • CsvItemExporter:添加了``join_multivalued``参数(:rev:2578

  • 为``xmliter_lxml``添加名称空间支持(:rev:2552

  • 改进了cookies中间件 COOKIES_DEBUG 更好的记录它( r2579 )

  • 对Scrapyd和Link提取器的一些改进

重新排列和删除代码¶

  • 合并的项传递和项抓取概念,因为它们在过去常常被证明是混淆的。这意味着: r2630 )
    • 原始item_scraped信号已被删除

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

    • 旧的日志行``Scraped Item ...``被删除了

    • 旧的日志行``通过的项目......``被重命名为``Scraped Item ...``行并降级为``DEBUG``级别

  • 通过将部分废弃代码分为两个新库来减少废弃代码库:
    • w3lib`_(来自``scrapy.utils。{http,markup,multipart,response,url}``的几个函数,完成于:rev:`2584

    • scrapely`_(是``scrapy.contrib.ibl`,完成于:rev:2586

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

  • 已从中删除googledir项目 examples/googledir . 现在有一个新的示例项目叫做 dirbot 在GitHub上提供:https://github.com/scray/dirbot

  • 删除了对Scrapy项目中默认字段值的支持(:rev:2616

  • 删除了实验crawlspider v2(:rev:2632

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

  • 已删除对将URL传递到的支持 scrapy crawl 命令(使用) scrapy parse 取而代之的是) r2704 )

  • 已删除不推荐使用的执行队列( r2704 )

  • 已删除(未记录)spider上下文扩展(来自scrapy.contrib.spiderContext)( r2780 )

  • 删除``CONCURRENT_SPIDERS``设置(改用scrapyd maxproc)(:rev:2789

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

  • 将设置``CLOSESPIDER_ITEMPASSED``重命名为:setting:CLOSESPIDER_ITEMCOUNT`(:rev:`2655)。 保持向后兼容性。

Scrapy 0.12¶

旧问题追踪器(trac)中的nnn参考票等数字不再可用。

新功能和改进¶

  • 传递的项现在发送到 item 论证 item_passed (273)

  • 向添加了详细选项 scrapy version 命令,用于错误报告(298)

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

  • 增加了项目数据存储目录(276,277)

  • Scrapy 项目的文档结构(见命令行工具文档)

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

  • 每个蜘蛛设置(245)

  • 支持退出代码,以在scrapy命令中发出错误信号(248)

  • 补充 -c 参数 scrapy shell 命令

  • 制造 libxml2 可选择的(第260)

  • 新的 deploy 命令(第261)

  • 补充 CLOSESPIDER_PAGECOUNT 设置(α253)

  • 补充 CLOSESPIDER_ERRORCOUNT 设置(α254)

抓取变化¶

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

  • 它为每个蜘蛛运行存储一个日志文件,并将其旋转以保持每个蜘蛛最新的5个日志(默认情况下)

  • 添加了一个最小的Web UI,默认情况下可从http://localhost:6800获得

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

对设置的更改¶

  • 补充 HTTPCACHE_ENABLED 设置(默认为false)以启用HTTP缓存中间件

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

弃用/废弃功能¶

  • 已弃用 runserver 有利于…的命令 server 启动ScrapyD服务器的命令。另请参见:ScrapyD更改

  • 已弃用 queue 有利于使用ScrapyD的命令 schedule.json 应用程序编程接口。另请参见:ScrapyD更改

  • 移除了!lxmlitemloader(从未升级到主控件的实验控件)

Scrapy 0.10¶

旧问题追踪器(trac)中的nnn参考票等数字不再可用。

新功能和改进¶

  • 新的Scrapy服务称为``scrapyd``,用于在生产中部署Scrapy爬虫(#218)(可用文档)

  • 简化的图像管道使用,现在无需对自己的图像管道进行子类化(217)

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

  • 重构公共基本代码中的执行队列和称为“spider队列”的可插拔后端(220)

  • 新的持久蜘蛛队列(基于sqlite)(198),默认情况下可用,允许在服务器模式下启动scrappy,然后安排蜘蛛运行。

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

  • 具有可插拔后端的Feed exporters(197)(提供文档)

  • 延迟信号(193)

  • 向item pipeline open_spider()添加了两个新方法,使用延迟支持关闭_spider()(195)

  • 支持覆盖每个spider的默认请求头(181)

  • 将默认的spider管理器替换为具有类似功能但不依赖于双绞线插件的管理器(186)

  • 将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完成添加到命令行工具(210)

  • 重命名命令 startrunserver (209)

API更改¶

  • urlbody 请求对象的属性现在是只读的(230)

  • Request.copy()Request.replace() 现在也复制他们的 callbackerrback 属性(231)

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

  • 非现场Middelware不会过滤掉来自没有允许域属性的spider的任何请求(225)

  • 删除蜘蛛管理器 load() 方法。现在蜘蛛被装载在 __init__ 方法本身。

  • 对Scrapy Manager(现在称为“crawler”)的更改:
    • scrapy.core.manager.ScrapyManager class renamed to scrapy.crawler.Crawler

    • scrapy.core.manager.scrapymanager singleton moved to scrapy.project.crawler

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

  • 蜘蛛管理器单例从``scrapy.spider.spiders``移动到``scrapy.project.crawler``单例的``spiders`属性。

  • 已移动的统计信息收集器类:(204)
    • scrapy.stats.collector.StatsCollector to scrapy.statscol.StatsCollector

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

  • 默认的每个命令设置现在在 default_settings 命令对象类的属性(201)

  • 已更改项管道的参数 proce将Item管道``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和Item Pipeline 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参考票等数字不再可用。

新功能和改进¶

  • 向scrappy.mail添加了smtp-auth支持

  • 添加的新设置: MAIL_USERMAIL_PASS ( r2065 (149)

  • 添加了新的scrapy-ctl视图命令 - 在浏览器中查看URL,如Scrapy所见(:rev:2039

  • 添加了用于控制Scrapy进程的Web服务(这也会取消Web控制台的支持)。( r2053 (167)

  • 支持将Scrapy作为服务运行,用于生产系统( r1988 , r2054 , r2055 , r2056 , r2057 (168)

  • 添加了包装感应库(文档目前仅在源代码中可用)。( r2011 )

  • 简化和改进的响应编码支持( r1961 , r1969 )

  • 补充 LOG_ENCODING 设置( r1956 ,文档可用)

  • 补充 RANDOMIZE_DOWNLOAD_DELAY 设置(默认启用)( r1923 ,文档可用)

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

  • Linkextractor和新的Crawlspider现在处理相对的基标记URL( r1960 (148)

  • 项目加载器和处理器的几个改进( r2022 , r2023 , r2024 , r2025 , r2026 , r2027 , r2028 , r2029 , r2030 )

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

  • 支持不带回调的请求( r2050 (166)

API更改¶

  • 将``Spider.domain_name``改为``Spider.name``(SEP-012,:rev:1975

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

  • HttpErrorMiddleware 现在不返回任何值或引发异常( r2006 (157)

  • scrapy.command 模块重新定位( r2035 , r2036 , r2037 )

  • 补充 ExecutionQueue 用来喂蜘蛛( r2034 )

  • 删除了``ExecutionEngine`` singleton(:rev:2039

  • 端口 S3ImagesStore (图像管道)使用boto和线程( r2033 )

  • 移动模块: scrapy.management.telnetscrapy.telnet ( r2047 )

更改为默认设置¶

  • 更改的默认值 SCHEDULER_ORDERDFO ( r1939 )

Scrapy 0.8¶

旧问题追踪器(trac)中的nnn参考票等数字不再可用。

新特点¶

  • 添加了默认的响应编码设置( r1809 )

  • 在``FormRequest.from_response()``方法(:rev:1813,:rev:1816)中添加了``dont_click``参数

  • 在``FormRequest.from_response()``方法(:rev:1802,:rev:1803)中添加了``clickdata``参数

  • 添加了对HTTP代理的支持( HttpProxyMiddleware ( r1781 , r1785 )

  • 当过滤掉请求时,异地蜘蛛中间件现在记录消息。( r1841 )

向后不兼容的更改¶

  • 改变 scrapy.utils.response.get_meta_refresh() signature (r1804)

  • 删除了已弃用的``scrapy.item.ScrapedItem``类 - 使用``scrapy.item.Item代替```(:rev:1838

  • 删除了已弃用的``scrapy.xpath``模块 - 改为使用``scrapy.selector``。(启:1836

  • 删除了已弃用的``core.signals.domain_open``信号 - 改为使用``core.signals.domain_opened``(:rev:1822

  • log.msg() 现在收到一个 spider 论证(论证) r1822 )
    • 旧的域参数已被弃用,将在0.9中删除。对于蜘蛛,你应该经常使用 spider 参数并传递spider引用。如果确实要传递字符串,请使用 component 改为参数。

  • 改变核心信号 domain_openeddomain_closeddomain_idle

  • 将项目管道更改为使用spider而不是域
    • 这个 domain 的参数 process_item() 项目管道方法已更改为 spider ,新签名为: process_item(spider, item) ( r1827 (105)

    • 要快速移植代码(使用Scrapy0.8),只需使用 spider.domain_name 你以前用过的地方 domain .

  • 更改了stats API以使用spider而不是域( r1849 (113)
    • StatsCollector 已更改为在其方法中接收蜘蛛引用(而不是域)( set_valueinc_value 等)。

    • 补充 StatsCollector.iter_spider_stats() 方法

    • 删除了``StatsCollector.list_domains()``方法

    • 另外,stats信号被重命名,现在传递蜘蛛引用(而不是域)。以下是更改的摘要:

    • 要快速移植代码(使用Scrapy0.8),只需使用 spider.domain_name 你以前用过的地方 domain . spider_stats 包含与完全相同的数据 domain_stats .

  • CloseDomain 扩展移动到 scrapy.contrib.closespider.CloseSpider ( r1833 )
    • 其设置也被重命名:
      • CLOSEDOMAIN_TIMEOUT to CLOSESPIDER_TIMEOUT

      • CLOSEDOMAIN_ITEMCOUNT to CLOSESPIDER_ITEMCOUNT

  • 删除了已弃用的``SCRAPYSETTINGS_MODULE``环境变量 - 改为使用``SCRAPY_SETTINGS_MODULE``(:rev:1840

  • 将设置:``REQUESTS_PER_DOMAIN``重命名为``CONCURRENT_REQUESTS_PER_SPIDER``(:rev:1830,:rev:1844

  • 将设置:``CONCURRENT_DOMAINS``重命名为``CONCURRENT_SPIDERS``(:rev:1830

  • 重构HTTP缓存中间件

  • HTTP缓存中间件经过了大量的重构,保留了相同的功能,但删除了域分段。( r1843 )

  • 重命名的异常: DontCloseDomainDontCloseSpider ( r1859 (120)

  • 重命名的扩展名: DelayedCloseDomainSpiderCloseDelay ( r1861 (121)

  • 删除了过时的``scrapy.utils.markup.remove_escape_chars``函数 - 改用``scrapy.utils.markup.replace_escape_chars``(:rev:1865

Scrapy 0.7¶

第一次发行的Scrapy。

刮痧2.3.0(2020-08-04)¶

亮点:

  • Feed exports 现在支持 Google Cloud Storage 作为存储后端

  • 新的 FEED_EXPORT_BATCH_ITEM_COUNT 设置允许批量传递输出项,最多可达指定的项数。

    它还可以作为 delayed file delivery ,这会导致Scrapy在使用某些存储后端时仅在爬网完成后才开始项目传递 (S3FTP ,现在呢 GCS

  • 基本实现 item loaders 已经搬进了一个单独的类库, itemloaders ,允许从外部使用Scrapy和单独的发布时间表

折旧清除¶

  • 从中删除了以下类及其父模块 scrapy.linkextractors

    • htmlparser.HtmlParserLinkExtractor

    • regex.RegexLinkExtractor

    • sgml.BaseSgmlLinkExtractor

    • sgml.SgmlLinkExtractor

    使用 LinkExtractor 相反 (issue 4356 , issue 4679 )

贬抑¶

  • 这个 scrapy.utils.python.retry_on_eintr 函数现在已弃用 (issue 4683 )

新特点¶

  • Feed exports support Google Cloud
    Storage
    (issue 685, issue 3608)

  • 新的 FEED_EXPORT_BATCH_ITEM_COUNT 批量交货设置 (issue 4250 , issue 4434 )

  • 这个 parse 命令现在允许指定输出文件 (issue 4317 , issue 4377 )

  • Request.from_curl and
    curl_to_request_kwargs() now also support
    --data-raw (issue 4612)

  • A parse callback may now be used in built-in spider subclasses, such
    as CrawlSpider (issue 712, issue 732,
    issue 781, issue 4254 )

错误修复¶

  • Fixed the CSV exporting of
    dataclass items and attr.s items (issue 4667, issue 4668)

  • Request.from_curlcurl_to_request_kwargs() 现在将request方法设置为 POST 当指定了请求正文而未指定请求方法时 (issue 4612 )

  • 在Windows10.0.14393及更高版本中启用了ANSI转义序列的处理,其中彩色输出需要它 (issue 4393 , issue 4403 )

文档¶

  • 更新了 OpenSSL cipher list format 文档中有关 DOWNLOADER_CLIENT_TLS_CIPHERS 设置 (issue 4653 )

  • Simplified the code example in 使用dataclass项
    (issue 4652)

质量保证¶

  • The base implementation of item loaders has been
    moved into itemloaders (issue 4005,
    issue 4516)

  • 修复了某些调度程序中的错误 (issue 4644 , issue 4645 )

  • 已续订用于SSL测试的本地主机证书 (issue 4650 )

  • 删除了python2特有的cookie处理代码 (issue 4682 )

  • 停止使用Python2 unicode文本语法 (issue 4704 )

  • 停止使用齿隙来继续生产线 (issue 4673 )

  • 从MyPy异常列表中删除了不需要的条目 (issue 4690 )

  • 自动化测试现在作为我们持续集成系统的一部分在Windows上传递 (issue 4458 )

  • 自动化测试现在通过最新的PyPy版本来获得我们的持续集成系统中支持的Python版本 (issue 4504 )

折旧清除¶

  • 从中删除了以下类及其父模块 scrapy.linkextractors

    • htmlparser.HtmlParserLinkExtractor

    • regex.RegexLinkExtractor

    • sgml.BaseSgmlLinkExtractor

    • sgml.SgmlLinkExtractor

    使用 LinkExtractor 相反 (issue 4356 , issue 4679 )

贬抑¶

  • 这个 scrapy.utils.python.retry_on_eintr 函数现在已弃用 (issue 4683 )

新特点¶

  • Feed exports support Google Cloud
    Storage
    (issue 685, issue 3608)

  • 新的 FEED_EXPORT_BATCH_ITEM_COUNT 批量交货设置 (issue 4250 , issue 4434 )

  • 这个 parse 命令现在允许指定输出文件 (issue 4317 , issue 4377 )

  • Request.from_curl and
    curl_to_request_kwargs() now also support
    --data-raw (issue 4612)

  • A parse callback may now be used in built-in spider subclasses, such
    as CrawlSpider (issue 712, issue 732,
    issue 781, issue 4254 )

错误修复¶

  • Fixed the CSV exporting of
    dataclass items and attr.s items (issue 4667, issue 4668)

  • Request.from_curlcurl_to_request_kwargs() 现在将request方法设置为 POST 当指定了请求正文而未指定请求方法时 (issue 4612 )

  • 在Windows10.0.14393及更高版本中启用了ANSI转义序列的处理,其中彩色输出需要它 (issue 4393 , issue 4403 )

文档¶

  • 更新了 OpenSSL cipher list format 文档中有关 DOWNLOADER_CLIENT_TLS_CIPHERS 设置 (issue 4653 )

  • Simplified the code example in 使用dataclass项
    (issue 4652)

质量保证¶

  • The base implementation of item loaders has been
    moved into itemloaders (issue 4005,
    issue 4516)

  • 修复了某些调度程序中的错误 (issue 4644 , issue 4645 )

  • 已续订用于SSL测试的本地主机证书 (issue 4650 )

  • 删除了python2特有的cookie处理代码 (issue 4682 )

  • 停止使用Python2 unicode文本语法 (issue 4704 )

  • 停止使用齿隙来继续生产线 (issue 4673 )

  • 从MyPy异常列表中删除了不需要的条目 (issue 4690 )

  • 自动化测试现在作为我们持续集成系统的一部分在Windows上传递 (issue 4458 )

  • 自动化测试现在通过最新的PyPy版本来获得我们的持续集成系统中支持的Python版本 (issue 4504 )

2.2.1(2020-07-17)¶

  • 这个 startproject 命令不再对目标文件夹中文件的权限进行意外更改,例如删除执行权限 (issue 4662 , issue 4666 )

刮痧2.2.0(2020-06-24)¶

亮点:

  • 现在需要Python3.5.2+

  • dataclass objects and
    attrs objects are now valid item types

  • 新的 TextResponse.json 方法

  • 新的 bytes_received 允许取消响应下载的信号

  • CookiesMiddleware 修正

向后不兼容的更改¶

  • Support for Python 3.5.0 and 3.5.1 has been dropped; Scrapy now refuses to
    run with a Python version lower than 3.5.2, which introduced
    typing.Type (issue 4615)

贬抑¶

  • TextResponse.body_as_unicode 现在已弃用,请使用 TextResponse.text 相反 (issue 4546 , issue 4555 , issue 4579 )

  • scrapy.item.BaseItem 现在已弃用,请使用 scrapy.item.Item 相反 (issue 4534 )

新特点¶

  • dataclass objects and
    attrs objects are now valid item types, and a new itemadapter library makes it easy to
    write code that supports any item type
    (issue 2749, issue 2807, issue 3761, issue 3881, issue 4642)

  • 一个新的 TextResponse.json 方法允许反序列化JSON响应 (issue 2444 , issue 4460 , issue 4574 )

  • A new bytes_received signal allows monitoring response download
    progress and stopping downloads
    (issue 4205, issue 4559)

  • 的结果列表中的词典 media pipeline 现在包括一个新的密钥, status ,指示文件是否已下载,如果未下载,则说明未下载的原因;请参阅 FilesPipeline.get_media_requests 更多信息 (issue 2893 , issue 4486 )

  • 使用时 Google Cloud Storage 对于一个 media pipeline ,如果配置的凭据没有授予所需的权限,则现在会记录一个警告 (issue 4346 , issue 4508 )

  • Link extractors are now serializable,
    as long as you do not use lambdas for parameters; for
    example, you can now pass link extractors in Request.cb_kwargs or
    Request.meta when persisting
    scheduled requests
    (issue 4554)

  • 升级了 pickle protocol 从协议2到协议4的Scrapy使用,提高了序列化能力和性能 (issue 4135 , issue 4541 )

  • scrapy.utils.misc.create_instance() now raises a TypeError
    exception if the resulting instance is None (issue 4528,
    issue 4532)

错误修复¶

  • CookiesMiddleware no longer
    discards cookies defined in Request.headers (issue 1992, issue 2400)

  • CookiesMiddleware no longer
    re-encodes cookies defined as bytes in the cookies parameter
    of the __init__ method of Request
    (issue 2400, issue 3575)

  • 什么时候? FEEDS 定义多个uri, FEED_STORE_EMPTYFalse 爬网不会产生任何项目,Scrapy在第一个URI之后不再停止feed导出 (issue 4621 , issue 4626 )

  • Spider callbacks defined using coroutine
    syntax
    no longer need to return an iterable, and may
    instead return a Request object, an
    item, or None (issue 4609)

  • 这个 startproject 命令现在确保生成的项目文件夹和文件具有正确的权限 (issue 4604 )

  • Fix a KeyError exception being sometimes raised from
    scrapy.utils.datatypes.LocalWeakReferencedCache (issue 4597,
    issue 4599)

  • 什么时候? FEEDS 定义了多个uri,关于正在存储的项的日志消息现在包含来自相应提要的信息,而不是总是只包含一个提要的信息 (issue 4619 , issue 4629 )

文档¶

  • Added a new section about accessing cb_kwargs from errbacks (issue 4598, issue 4634)

  • Covered chompjs in 分析javascript代码 (issue 4556,
    issue 4562)

  • 从中删除 协同程序 关于API正在试验的警告 (issue 4511 , issue 4513 )

  • Removed references to unsupported versions of Twisted (issue 4533)

  • Updated the description of the screenshot pipeline example, which now uses coroutine syntax instead of returning a
    Deferred (issue 4514, issue 4593)

  • 从中删除了一个误导性的导入行 scrapy.utils.log.configure_logging() 代码示例 (issue 4510 , issue 4587 )

  • The display-on-hover behavior of internal documentation references now also
    covers links to commands, Request.meta keys, settings and
    signals (issue 4495, issue 4563)

  • 再次可以下载文档进行脱机阅读 (issue 4578 , issue 4585 )

  • 删除前面的反斜杠 *args**kwargs 在某些函数和方法签名中 (issue 4592 , issue 4596 )

质量保证¶

  • Adjusted the code base further to our style guidelines (issue 4237, issue 4525, issue 4538,
    issue 4539, issue 4540, issue 4542, issue 4543, issue 4544,
    issue 4545, issue 4557, issue 4558, issue 4566, issue 4568,
    issue 4572)

  • 删除了Python2支持的残余部分 (issue 4550 , issue 4553 , issue 4568 )

  • 改进了 crawlrunspider 命令 (issue 4548 , issue 4552 )

  • Replaced chain(*iterable) with chain.from_iterable(iterable)
    (issue 4635)

  • 您现在可以运行 asyncio 在任何Python版本上使用Tox进行测试 (issue 4521 )

  • 更新测试要求,以反映与pytest 5.4和5.4.1的不兼容性 (issue 4588 )

  • 改进 SpiderLoader 测试包含重复蜘蛛名称的场景的覆盖率 (issue 4549 , issue 4560 )

  • 将Travis CI配置为也使用python3.5.2运行测试 (issue 4518 , issue 4615 )

  • 增加了一个 Pylint 特拉维斯·CI的工作 (issue 3727 )

  • 增加了一个 Mypy 特拉维斯·CI的工作 (issue 4637 )

  • 在测试中使用集合字面值 (issue 4573 )

  • 已清理Travis CI配置 (issue 4517 , issue 4519 , issue 4522 , issue 4537 )

向后不兼容的更改¶

  • Support for Python 3.5.0 and 3.5.1 has been dropped; Scrapy now refuses to
    run with a Python version lower than 3.5.2, which introduced
    typing.Type (issue 4615)

贬抑¶

  • TextResponse.body_as_unicode 现在已弃用,请使用 TextResponse.text 相反 (issue 4546 , issue 4555 , issue 4579 )

  • scrapy.item.BaseItem 现在已弃用,请使用 scrapy.item.Item 相反 (issue 4534 )

新特点¶

  • dataclass objects and
    attrs objects are now valid item types, and a new itemadapter library makes it easy to
    write code that supports any item type
    (issue 2749, issue 2807, issue 3761, issue 3881, issue 4642)

  • 一个新的 TextResponse.json 方法允许反序列化JSON响应 (issue 2444 , issue 4460 , issue 4574 )

  • A new bytes_received signal allows monitoring response download
    progress and stopping downloads
    (issue 4205, issue 4559)

  • 的结果列表中的词典 media pipeline 现在包括一个新的密钥, status ,指示文件是否已下载,如果未下载,则说明未下载的原因;请参阅 FilesPipeline.get_media_requests 更多信息 (issue 2893 , issue 4486 )

  • 使用时 Google Cloud Storage 对于一个 media pipeline ,如果配置的凭据没有授予所需的权限,则现在会记录一个警告 (issue 4346 , issue 4508 )

  • Link extractors are now serializable,
    as long as you do not use lambdas for parameters; for
    example, you can now pass link extractors in Request.cb_kwargs or
    Request.meta when persisting
    scheduled requests
    (issue 4554)

  • 升级了 pickle protocol 从协议2到协议4的Scrapy使用,提高了序列化能力和性能 (issue 4135 , issue 4541 )

  • scrapy.utils.misc.create_instance() now raises a TypeError
    exception if the resulting instance is None (issue 4528,
    issue 4532)

错误修复¶

  • CookiesMiddleware no longer
    discards cookies defined in Request.headers (issue 1992, issue 2400)

  • CookiesMiddleware no longer
    re-encodes cookies defined as bytes in the cookies parameter
    of the __init__ method of Request
    (issue 2400, issue 3575)

  • 什么时候? FEEDS 定义多个uri, FEED_STORE_EMPTYFalse 爬网不会产生任何项目,Scrapy在第一个URI之后不再停止feed导出 (issue 4621 , issue 4626 )

  • Spider callbacks defined using coroutine
    syntax
    no longer need to return an iterable, and may
    instead return a Request object, an
    item, or None (issue 4609)

  • 这个 startproject 命令现在确保生成的项目文件夹和文件具有正确的权限 (issue 4604 )

  • Fix a KeyError exception being sometimes raised from
    scrapy.utils.datatypes.LocalWeakReferencedCache (issue 4597,
    issue 4599)

  • 什么时候? FEEDS 定义了多个uri,关于正在存储的项的日志消息现在包含来自相应提要的信息,而不是总是只包含一个提要的信息 (issue 4619 , issue 4629 )

文档¶

  • Added a new section about accessing cb_kwargs from errbacks (issue 4598, issue 4634)

  • Covered chompjs in 分析javascript代码 (issue 4556,
    issue 4562)

  • 从中删除 协同程序 关于API正在试验的警告 (issue 4511 , issue 4513 )

  • Removed references to unsupported versions of Twisted (issue 4533)

  • Updated the description of the screenshot pipeline example, which now uses coroutine syntax instead of returning a
    Deferred (issue 4514, issue 4593)

  • 从中删除了一个误导性的导入行 scrapy.utils.log.configure_logging() 代码示例 (issue 4510 , issue 4587 )

  • The display-on-hover behavior of internal documentation references now also
    covers links to commands, Request.meta keys, settings and
    signals (issue 4495, issue 4563)

  • 再次可以下载文档进行脱机阅读 (issue 4578 , issue 4585 )

  • 删除前面的反斜杠 *args**kwargs 在某些函数和方法签名中 (issue 4592 , issue 4596 )

质量保证¶

  • Adjusted the code base further to our style guidelines (issue 4237, issue 4525, issue 4538,
    issue 4539, issue 4540, issue 4542, issue 4543, issue 4544,
    issue 4545, issue 4557, issue 4558, issue 4566, issue 4568,
    issue 4572)

  • 删除了Python2支持的残余部分 (issue 4550 , issue 4553 , issue 4568 )

  • 改进了 crawlrunspider 命令 (issue 4548 , issue 4552 )

  • Replaced chain(*iterable) with chain.from_iterable(iterable)
    (issue 4635)

  • 您现在可以运行 asyncio 在任何Python版本上使用Tox进行测试 (issue 4521 )

  • 更新测试要求,以反映与pytest 5.4和5.4.1的不兼容性 (issue 4588 )

  • 改进 SpiderLoader 测试包含重复蜘蛛名称的场景的覆盖率 (issue 4549 , issue 4560 )

  • 将Travis CI配置为也使用python3.5.2运行测试 (issue 4518 , issue 4615 )

  • 增加了一个 Pylint 特拉维斯·CI的工作 (issue 3727 )

  • 增加了一个 Mypy 特拉维斯·CI的工作 (issue 4637 )

  • 在测试中使用集合字面值 (issue 4573 )

  • 已清理Travis CI配置 (issue 4517 , issue 4519 , issue 4522 , issue 4537 )

刮痧2.1.0(2020-04-24)¶

亮点:

  • 新的 FEEDS 设置导出到多个源

  • 新的 Response.ip_address 属性

向后不兼容的更改¶

  • AssertionError 引发异常的原因 assert 语句已被新的异常类型取代,以支持在优化模式下运行Python(请参见 -O )不会以任何意想不到的方式改变斯帕蒂的行为。

    如果你抓住一个 AssertionError 来自Scrapy的异常,更新您的代码以捕获相应的新异常。

    (issue 4440 )

折旧清除¶

  • 这个 LOG_UNSERIALIZABLE_REQUESTS 设置不再受支持,请使用 SCHEDULER_DEBUG 相反 (issue 4385 )

  • 这个 REDIRECT_MAX_METAREFRESH_DELAY 设置不再受支持,请使用 METAREFRESH_MAXDELAY 相反 (issue 4385 )

  • 这个 ChunkedTransferMiddleware 中间件已被删除,包括整个 scrapy.downloadermiddlewares.chunked 模块;分块传输是开箱即用的 (issue 4431 )

  • 这个 spiders 属性已从中删除 Crawler 使用 CrawlerRunner.spider_loader 或实例化 SPIDER_LOADER_CLASS 用你的设置代替 (issue 4398 )

  • The MultiValueDict, MultiValueDictKeyError, and SiteNode
    classes have been removed from scrapy.utils.datatypes
    (issue 4400)

贬抑¶

  • 这个 FEED_FORMATFEED_URI 设置已被弃用,取而代之的是 FEEDS 设置 (issue 1336 , issue 3858 , issue 4507 )

新特点¶

  • 一个新的环境, FEEDS ,允许配置具有不同设置的多个输出源 (issue 1336 , issue 3858 , issue 4507 )

  • 这个 crawlrunspider 命令现在支持多个 -o 参数 (issue 1336 , issue 3858 , issue 4507 )

  • 这个 crawlrunspider 命令现在支持通过附加 :<format> 到输出文件 (issue 1336 , issue 3858 , issue 4507 )

  • 新的 Response.ip_address 属性提供对发起响应的IP地址的访问 (issue 3903 , issue 3940 )

  • allowed_domains 包括一个端口 (issue 50 , issue 3198 , issue 4413 )

  • Zsh completion现在将使用的选项别名从完成列表中排除 (issue 4438 )

错误修复¶

  • Request serialization 不再中断为spider属性的回调,这些属性被分配了一个不同名称的函数 (issue 4500 )

  • None 价值观 allowed_domains 不再引起 TypeError 例外 (issue 4410 )

  • Zsh完成不再允许参数后的选项 (issue 4438 )

  • zope.接口现在支持5.0.0和更高版本 (issue 4447 , issue 4448 )

  • Spider.make_requests_from_url ,已在Scrapy 1.4.0中弃用,现在在使用时发出警告 (issue 4412 )

文档¶

  • Improved the documentation about signals that allow their handlers to
    return a Deferred (issue 4295,
    issue 4390)

  • 我们的PyPI条目现在包含了文档、源代码存储库和问题跟踪程序的链接 (issue 4456 )

  • 覆盖了 curl2scrapy 文件中的服务 (issue 4206 , issue 4455 )

  • 删除了对Guppy库的引用,该库只在python2中工作 (issue 4285 , issue 4343 )

  • 扩展使用InterSphinx链接到python3文档 (issue 4444 , issue 4445 )

  • 增加了对Sphinx3.0及更高版本的支持 (issue 4475 , issue 4480 , issue 4496 , issue 4503 )

质量保证¶

  • 删除了有关使用旧的已删除设置的警告 (issue 4404 )

  • 删除了有关导入的警告 StringTransporttwisted.test.proto_helpers 在Twisted 19.7.0或更新版本中 (issue 4409 )

  • 删除了过时的Debian包生成文件 (issue 4384 )

  • 远离的 object 作为基类使用 (issue 4430 )

  • 删除了添加了对我们不再支持的Twisted旧版本的支持的代码 (issue 4472 )

  • 修复了代码样式问题 (issue 4468 , issue 4469 , issue 4471 , issue 4481 )

  • 远离的 twisted.internet.defer.returnValue() 电话 (issue 4443 , issue 4446 , issue 4489 )

向后不兼容的更改¶

  • AssertionError 引发异常的原因 assert 语句已被新的异常类型取代,以支持在优化模式下运行Python(请参见 -O )不会以任何意想不到的方式改变斯帕蒂的行为。

    如果你抓住一个 AssertionError 来自Scrapy的异常,更新您的代码以捕获相应的新异常。

    (issue 4440 )

折旧清除¶

  • 这个 LOG_UNSERIALIZABLE_REQUESTS 设置不再受支持,请使用 SCHEDULER_DEBUG 相反 (issue 4385 )

  • 这个 REDIRECT_MAX_METAREFRESH_DELAY 设置不再受支持,请使用 METAREFRESH_MAXDELAY 相反 (issue 4385 )

  • 这个 ChunkedTransferMiddleware 中间件已被删除,包括整个 scrapy.downloadermiddlewares.chunked 模块;分块传输是开箱即用的 (issue 4431 )

  • 这个 spiders 属性已从中删除 Crawler 使用 CrawlerRunner.spider_loader 或实例化 SPIDER_LOADER_CLASS 用你的设置代替 (issue 4398 )

  • The MultiValueDict, MultiValueDictKeyError, and SiteNode
    classes have been removed from scrapy.utils.datatypes
    (issue 4400)

贬抑¶

  • 这个 FEED_FORMATFEED_URI 设置已被弃用,取而代之的是 FEEDS 设置 (issue 1336 , issue 3858 , issue 4507 )

新特点¶

  • 一个新的环境, FEEDS ,允许配置具有不同设置的多个输出源 (issue 1336 , issue 3858 , issue 4507 )

  • 这个 crawlrunspider 命令现在支持多个 -o 参数 (issue 1336 , issue 3858 , issue 4507 )

  • 这个 crawlrunspider 命令现在支持通过附加 :<format> 到输出文件 (issue 1336 , issue 3858 , issue 4507 )

  • 新的 Response.ip_address 属性提供对发起响应的IP地址的访问 (issue 3903 , issue 3940 )

  • allowed_domains 包括一个端口 (issue 50 , issue 3198 , issue 4413 )

  • Zsh completion现在将使用的选项别名从完成列表中排除 (issue 4438 )

错误修复¶

  • Request serialization 不再中断为spider属性的回调,这些属性被分配了一个不同名称的函数 (issue 4500 )

  • None 价值观 allowed_domains 不再引起 TypeError 例外 (issue 4410 )

  • Zsh完成不再允许参数后的选项 (issue 4438 )

  • zope.接口现在支持5.0.0和更高版本 (issue 4447 , issue 4448 )

  • Spider.make_requests_from_url ,已在Scrapy 1.4.0中弃用,现在在使用时发出警告 (issue 4412 )

文档¶

  • Improved the documentation about signals that allow their handlers to
    return a Deferred (issue 4295,
    issue 4390)

  • 我们的PyPI条目现在包含了文档、源代码存储库和问题跟踪程序的链接 (issue 4456 )

  • 覆盖了 curl2scrapy 文件中的服务 (issue 4206 , issue 4455 )

  • 删除了对Guppy库的引用,该库只在python2中工作 (issue 4285 , issue 4343 )

  • 扩展使用InterSphinx链接到python3文档 (issue 4444 , issue 4445 )

  • 增加了对Sphinx3.0及更高版本的支持 (issue 4475 , issue 4480 , issue 4496 , issue 4503 )

质量保证¶

  • 删除了有关使用旧的已删除设置的警告 (issue 4404 )

  • 删除了有关导入的警告 StringTransporttwisted.test.proto_helpers 在Twisted 19.7.0或更新版本中 (issue 4409 )

  • 删除了过时的Debian包生成文件 (issue 4384 )

  • 远离的 object 作为基类使用 (issue 4430 )

  • 删除了添加了对我们不再支持的Twisted旧版本的支持的代码 (issue 4472 )

  • 修复了代码样式问题 (issue 4468 , issue 4469 , issue 4471 , issue 4481 )

  • 远离的 twisted.internet.defer.returnValue() 电话 (issue 4443 , issue 4446 , issue 4489 )

刮痧2.0.1(2020-03-18)¶

  • Response.follow_all 现在支持一个空的URL iterable作为输入 (issue 4408 , issue 4420 )

  • Removed top-level reactor imports to prevent
    errors about the wrong Twisted reactor being installed when setting a
    different Twisted reactor using TWISTED_REACTOR (issue 4401,
    issue 4406)

  • 固定测试 (issue 4422 )

刮痧2.0.0(2020-03-03)¶

亮点:

  • Python2支持已被删除

  • Partial coroutine syntax 支持和 experimental asyncio 支持

  • 新的 Response.follow_all 方法

  • FTP support 对于介质管道

  • 新的 Response.certificate 属性

  • IPv6支持通过 DNS_RESOLVER

向后不兼容的更改¶

  • Python 2 support has been removed, following Python 2 end-of-life on
    January 1, 2020 (issue 4091, issue 4114, issue 4115,
    issue 4121, issue 4138, issue 4231, issue 4242, issue 4304,
    issue 4309, issue 4373)

  • 重试gaveups(请参阅 RETRY_TIMES )现在记录为错误而不是调试信息 (issue 3171 , issue 3566 )

  • File extensions that
    LinkExtractor
    ignores by default now also include 7z, 7zip, apk, bz2,
    cdr, dmg, ico, iso, tar, tar.gz, webm, and
    xz (issue 1837, issue 2067, issue 4066)

  • 这个 METAREFRESH_IGNORE_TAGS 设置现在默认为空列表,遵循web浏览器行为 (issue 3844 , issue 4311 )

  • 这个 HttpCompressionMiddleware 现在在值中包含逗号后的空格 Accept-Encoding 它设置的标头,遵循web浏览器行为 (issue 4293 )

  • 这个 __init__ 自定义下载处理程序的方法(请参见 DOWNLOAD_HANDLERS )或以下下载程序处理程序的子类不再接收 settings 参数:

    • scrapy.core.downloader.handlers.datauri.DataURIDownloadHandler

    • scrapy.core.downloader.handlers.file.FileDownloadHandler

    使用 from_settingsfrom_crawler 类方法将此类参数公开给自定义下载处理程序。

    (issue 4126 )

  • 我们已经重构了 scrapy.core.scheduler.Scheduler 类和相关队列类(请参见 SCHEDULER_PRIORITY_QUEUESCHEDULER_DISK_QUEUESCHEDULER_MEMORY_QUEUE )使实现自定义调度程序队列类更容易。看到了吗 计划程序队列类的更改 详情见下文。

  • 覆盖的设置现在以不同的格式记录。这更符合启动时记录的类似信息 (issue 4199 )

折旧清除¶

  • 这个 Scrapy shell 不再提供 sel 代理对象,使用 response.selector 相反 (issue 4347 )

  • LevelDB支持已删除 (issue 4112 )

  • The following functions have been removed from scrapy.utils.python:
    isbinarytext, is_writable, setattr_default, stringify_dict
    (issue 4362)

贬抑¶

  • 使用前缀为 SCRAPY_ 不推荐使用覆盖设置 (issue 4300 , issue 4374 , issue 4375 )

  • scrapy.linkextractors.FilteringLinkExtractor 已弃用,请使用 scrapy.linkextractors.LinkExtractor 相反 (issue 4045 )

  • 这个 noconnect 代理URL的查询字符串参数已弃用,应从代理URL中删除 (issue 4198 )

  • 这个 next 方法 scrapy.utils.python.MutableChain 已弃用,请使用全局 next() 功能或 MutableChain.__next__ 相反 (issue 4153 )

新特点¶

  • 补充 partial support 对于Python的 coroutine syntaxexperimental support 对于 asyncioasyncio -支持的库 (issue 4010 , issue 4259 , issue 4269 , issue 4270 , issue 4271 , issue 4316 , issue 4318 )

  • 新的 Response.follow_all 方法提供的功能与 Response.follow 但是支持一个iterable的url作为输入,并返回iterable请求 (issue 2582 , issue 4057 , issue 4286 )

  • Media pipelines now support FTP
    storage
    (issue 3928, issue 3961)

  • 新的 Response.certificate 属性将服务器的SSL证书公开为 twisted.internet.ssl.Certificate HTTPS响应的对象 (issue 2726 , issue 4054 )

  • 一个新的 DNS_RESOLVER 设置允许启用IPv6支持 (issue 1031 , issue 4227 )

  • 一个新的 SCRAPER_SLOT_MAX_ACTIVE_SIZE 设置允许配置现有的软限制,当正在处理的总响应数据太高时暂停请求下载 (issue 1410 , issue 3551 )

  • A new TWISTED_REACTOR setting allows customizing the
    reactor that Scrapy uses, allowing to
    enable asyncio support or deal with a
    common macOS issue (issue 2905,
    issue 4294)

  • Scheduler disk and memory queues may now use the class methods
    from_crawler or from_settings (issue 3884)

  • The new Response.cb_kwargs
    attribute serves as a shortcut for Response.request.cb_kwargs (issue 4331)

  • Response.follow now supports a
    flags parameter, for consistency with Request
    (issue 4277, issue 4279)

  • Item loader processors 现在可以是正则函数,它们不再需要是方法 (issue 3899 )

  • Rule 现在接受一个 errback 参数 (issue 4000 )

  • Request 不再需要 callbackerrback 参数已指定 (issue 3586 , issue 4008 )

  • LogFormatter 现在支持一些其他方法:

    • download_error 对于下载错误

    • item_error for exceptions
      raised during item processing by item pipelines

    • spider_error for exceptions
      raised from spider callbacks

    (issue 374 , issue 3986 , issue 3989 , issue 4176 , issue 4188 )

  • 这个 FEED_URI 设置现在支持 pathlib.Path 价值观 (issue 3731 , issue 4074 )

  • 一个新的 request_left_downloader 当请求离开下载程序时发送信号 (issue 4303 )

  • Scrapy在检测到使用 yield 但也返回一个值,因为返回的值将丢失 (issue 3484 , issue 3869 )

  • Spider 对象现在引发 AttributeError 如果他们没有 start_urls 属性或重新实现 start_requests ,但是有一个 start_url 属性 (issue 4133 , issue 4170 )

  • BaseItemExporter 子类现在可以使用 super().__init__(**kwargs) 而不是 self._configure(kwargs) 在他们 __init__ 方法,通过 dont_fail=True 给父母 __init__ 方法(如果需要),并访问 kwargsself._kwargs 打电话给他们的父母之后 __init__ 方法 (issue 4193 , issue 4370 )

  • 一个新的 keep_fragments 参数 scrapy.utils.request.request_fingerprint() 允许为URL中包含不同片段的请求生成不同的指纹 (issue 4104 )

  • 下载处理程序(请参见 DOWNLOAD_HANDLERS )现在可以使用 from_settingsfrom_crawler 其他垃圾组件已经支持的类方法 (issue 4126 )

  • scrapy.utils.python.MutableChain.__iter__ now returns self,
    allowing it to be used as a sequence
    (issue 4153)

错误修复¶

  • 这个 crawl 当爬行开始之前发生异常时,命令现在也会退出,退出代码为1 (issue 4175 , issue 4207 )

  • LinkExtractor.extract_links 不再对来自非UTF-8响应的查询字符串或url重新编码为UTF-8 (issue 998 , issue 1403 , issue 1949 , issue 4321 )

  • 第一个spider中间件(请参见 SPIDER_MIDDLEWARES )现在还处理从作为生成器的回调中引发的异常 (issue 4260 , issue 4272 )

  • 重定向到以3个斜杠开头的URL (/// )现在支持 (issue 4032 , issue 4042 )

  • Request 不再接受字符串作为 url 只是因为他们有结肠 (issue 2552 , issue 4094 )

  • The correct encoding is now used for attach names in
    MailSender (issue 4229, issue 4239)

  • RFPDupeFilter ,默认的 DUPEFILTER_CLASS ,不再写入额外的 \r 窗口中每行的字符,这使得 requests.seen 在那个平台上不必要的大文件 (issue 4283 )

  • Z shell自动完成现在查找 .html 文件,而不是 .http 文件,包括 -h 命令行开关 (issue 4122 , issue 4291 )

  • 将项目添加到 scrapy.utils.datatypes.LocalCache 没有 limit 定义不再引发 TypeError 例外 (issue 4123 )

  • Fixed a typo in the message of the ValueError exception raised when
    scrapy.utils.misc.create_instance() gets both settings and
    crawler set to None (issue 4128)

文档¶

  • API文档现在链接到相应源代码的联机、语法突出显示视图 (issue 4148 )

  • 链接到不存在的文档页现在允许访问侧栏 (issue 4152 , issue 4169 )

  • 文档中的交叉引用现在在悬停时显示工具提示 (issue 4173 , issue 4183 )

  • Improved the documentation about LinkExtractor.extract_links and
    simplified 链接提取器 (issue 4045)

  • 阐明了 ItemLoader.item 作品 (issue 3574 , issue 4099 )

  • Clarified that logging.basicConfig() should not be used when also
    using CrawlerProcess (issue 2149,
    issue 2352, issue 3146, issue 3960)

  • Clarified the requirements for Request objects
    when using persistence (issue 4124,
    issue 4139)

  • Clarified how to install a custom image pipeline (issue 4034, issue 4252)

  • 修复了 file_path 方法在 media pipeline 实例 (issue 4290 )

  • 涵盖了一个影响自定义的Scrapy 1.7.0中向后不兼容的更改 scrapy.core.scheduler.Scheduler 子类 (issue 4274 )

  • 改进了 README.rstCODE_OF_CONDUCT.md 文件夹 (issue 4059 )

  • 文档示例现在作为测试套件的一部分进行了检查,我们已经修复了检测到的一些问题 (issue 4142 , issue 4146 , issue 4171 , issue 4184 , issue 4190 )

  • 修复了逻辑问题,断开的链接和打字错误 (issue 4247 , issue 4258 , issue 4282 , issue 4288 , issue 4305 , issue 4308 , issue 4323 , issue 4338 , issue 4359 , issue 4361 )

  • 在引用 __init__ 对象的方法 (issue 4086 , issue 4088 )

  • Fixed an inconsistency between code and output in Scrapy一目了然
    (issue 4213)

  • 扩展 intersphinx 使用 (issue 4147 , issue 4172 , issue 4185 , issue 4194 , issue 4197 )

  • 我们现在使用Python的最新版本来构建文档 (issue 4140 , issue 4249 )

  • 已清理文档 (issue 4143 , issue 4275 )

质量保证¶

  • 重新启用代理 CONNECT 测验 (issue 2545 , issue 4114 )

  • 补充 Bandit 对我们的测试套件进行安全检查 (issue 4162 , issue 4181 )

  • 补充 Flake8 对我们的测试套件进行样式检查,并应用了许多相应的更改 (issue 3944 , issue 3945 , issue 4137 , issue 4157 , issue 4167 , issue 4174 , issue 4186 , issue 4195 , issue 4238 , issue 4246 , issue 4355 , issue 4360 , issue 4365 )

  • 提高测试覆盖率 (issue 4097 , issue 4218 , issue 4236 )

  • 开始报告最慢的测试,并改进了其中一些测试的性能 (issue 4163 , issue 4164 )

  • 修复了损坏的测试并重构了一些测试 (issue 4014 , issue 4095 , issue 4244 , issue 4268 , issue 4372 )

  • 修改了 tox 配置以允许使用任何Python版本运行测试,请运行 Bandit 和 Flake8 默认情况下进行测试,并以编程方式强制执行最低tox版本 (issue 4179 )

  • 已清理代码 (issue 3937 , issue 4208 , issue 4209 , issue 4210 , issue 4212 , issue 4369 , issue 4376 , issue 4378 )

计划程序队列类的更改¶

以下更改可能会影响所有类型的任何自定义队列类:

  • 这个 push 方法不再接收包含 request.priority * -1 . 如果需要该值,请从第一个位置参数获取它, request ,或者使用新的 priority() 方法在 scrapy.core.scheduler.ScrapyPriorityQueue 子类。

以下更改可能会影响自定义优先级队列类:

  • __init__ 方法或 from_crawlerfrom_settings 类方法:

    • 用于包含工厂函数的参数, qfactory ,现在作为名为的关键字参数传递 downstream_queue_cls .

    • 添加了一个新的关键字参数: key . 对于内存队列,它始终是空字符串,并指示 JOB_DIR 磁盘队列的值。

    • 包含上一次爬网数据的磁盘队列的参数, startpriosslot_startprios ,现在作为名为的关键字参数传递 startprios .

    • 这个 serialize 不再传递参数。在写入磁盘之前,磁盘队列类必须自己处理请求序列化,使用 request_to_dict()request_from_dict() 中的函数 scrapy.utils.reqser 模块。

以下更改可能会影响自定义磁盘和内存队列类:

  • 签名 __init__ 方法现在 __init__(self, crawler, key) .

以下更改特别影响 ScrapyPriorityQueueDownloaderAwarePriorityQueue 类来自 scrapy.core.scheduler 并可能影响子类:

  • __init__ 方法,则应用上述大多数更改。

    __init__ 仍然可以接收所有参数作为位置参数,但是:

    • downstream_queue_cls ,取代了 qfactory ,必须以不同的方式实例化。

      qfactory 已用优先级值(整数)实例化。

      实例 downstream_queue_cls 应该使用新的 ScrapyPriorityQueue.qfactoryDownloaderAwarePriorityQueue.pqfactory 方法。

    • 新的 key 参数替换了 startprios 参数1位于右侧。

  • 已添加以下类属性:

    • crawler

    • downstream_queue_cls (详见上文)

    • key (详见上文)

  • 这个 serialize 属性已被删除(以上详细信息)

以下更改特别影响 ScrapyPriorityQueue 类并可能影响子类:

  • 一个新的 priority() 已添加方法,该方法在给定请求时返回 request.priority * -1 .

    它用于 push() 以弥补它的删除 priority 参数。

  • 这个 spider 属性已删除。使用 crawler.spider 相反。

以下更改特别影响 DownloaderAwarePriorityQueue 类并可能影响子类:

  • 一个新的 pqueues 属性提供下载程序插槽名称到相应实例的映射 downstream_queue_cls .

(issue 3884 )

向后不兼容的更改¶

  • Python 2 support has been removed, following Python 2 end-of-life on
    January 1, 2020 (issue 4091, issue 4114, issue 4115,
    issue 4121, issue 4138, issue 4231, issue 4242, issue 4304,
    issue 4309, issue 4373)

  • 重试gaveups(请参阅 RETRY_TIMES )现在记录为错误而不是调试信息 (issue 3171 , issue 3566 )

  • File extensions that
    LinkExtractor
    ignores by default now also include 7z, 7zip, apk, bz2,
    cdr, dmg, ico, iso, tar, tar.gz, webm, and
    xz (issue 1837, issue 2067, issue 4066)

  • 这个 METAREFRESH_IGNORE_TAGS 设置现在默认为空列表,遵循web浏览器行为 (issue 3844 , issue 4311 )

  • 这个 HttpCompressionMiddleware 现在在值中包含逗号后的空格 Accept-Encoding 它设置的标头,遵循web浏览器行为 (issue 4293 )

  • 这个 __init__ 自定义下载处理程序的方法(请参见 DOWNLOAD_HANDLERS )或以下下载程序处理程序的子类不再接收 settings 参数:

    • scrapy.core.downloader.handlers.datauri.DataURIDownloadHandler

    • scrapy.core.downloader.handlers.file.FileDownloadHandler

    使用 from_settingsfrom_crawler 类方法将此类参数公开给自定义下载处理程序。

    (issue 4126 )

  • 我们已经重构了 scrapy.core.scheduler.Scheduler 类和相关队列类(请参见 SCHEDULER_PRIORITY_QUEUESCHEDULER_DISK_QUEUESCHEDULER_MEMORY_QUEUE )使实现自定义调度程序队列类更容易。看到了吗 计划程序队列类的更改 详情见下文。

  • 覆盖的设置现在以不同的格式记录。这更符合启动时记录的类似信息 (issue 4199 )

折旧清除¶

  • 这个 Scrapy shell 不再提供 sel 代理对象,使用 response.selector 相反 (issue 4347 )

  • LevelDB支持已删除 (issue 4112 )

  • The following functions have been removed from scrapy.utils.python:
    isbinarytext, is_writable, setattr_default, stringify_dict
    (issue 4362)

贬抑¶

  • 使用前缀为 SCRAPY_ 不推荐使用覆盖设置 (issue 4300 , issue 4374 , issue 4375 )

  • scrapy.linkextractors.FilteringLinkExtractor 已弃用,请使用 scrapy.linkextractors.LinkExtractor 相反 (issue 4045 )

  • 这个 noconnect 代理URL的查询字符串参数已弃用,应从代理URL中删除 (issue 4198 )

  • 这个 next 方法 scrapy.utils.python.MutableChain 已弃用,请使用全局 next() 功能或 MutableChain.__next__ 相反 (issue 4153 )

新特点¶

  • 补充 partial support 对于Python的 coroutine syntaxexperimental support 对于 asyncioasyncio -支持的库 (issue 4010 , issue 4259 , issue 4269 , issue 4270 , issue 4271 , issue 4316 , issue 4318 )

  • 新的 Response.follow_all 方法提供的功能与 Response.follow 但是支持一个iterable的url作为输入,并返回iterable请求 (issue 2582 , issue 4057 , issue 4286 )

  • Media pipelines now support FTP
    storage
    (issue 3928, issue 3961)

  • 新的 Response.certificate 属性将服务器的SSL证书公开为 twisted.internet.ssl.Certificate HTTPS响应的对象 (issue 2726 , issue 4054 )

  • 一个新的 DNS_RESOLVER 设置允许启用IPv6支持 (issue 1031 , issue 4227 )

  • 一个新的 SCRAPER_SLOT_MAX_ACTIVE_SIZE 设置允许配置现有的软限制,当正在处理的总响应数据太高时暂停请求下载 (issue 1410 , issue 3551 )

  • A new TWISTED_REACTOR setting allows customizing the
    reactor that Scrapy uses, allowing to
    enable asyncio support or deal with a
    common macOS issue (issue 2905,
    issue 4294)

  • Scheduler disk and memory queues may now use the class methods
    from_crawler or from_settings (issue 3884)

  • The new Response.cb_kwargs
    attribute serves as a shortcut for Response.request.cb_kwargs (issue 4331)

  • Response.follow now supports a
    flags parameter, for consistency with Request
    (issue 4277, issue 4279)

  • Item loader processors 现在可以是正则函数,它们不再需要是方法 (issue 3899 )

  • Rule 现在接受一个 errback 参数 (issue 4000 )

  • Request 不再需要 callbackerrback 参数已指定 (issue 3586 , issue 4008 )

  • LogFormatter 现在支持一些其他方法:

    • download_error 对于下载错误

    • item_error for exceptions
      raised during item processing by item pipelines

    • spider_error for exceptions
      raised from spider callbacks

    (issue 374 , issue 3986 , issue 3989 , issue 4176 , issue 4188 )

  • 这个 FEED_URI 设置现在支持 pathlib.Path 价值观 (issue 3731 , issue 4074 )

  • 一个新的 request_left_downloader 当请求离开下载程序时发送信号 (issue 4303 )

  • Scrapy在检测到使用 yield 但也返回一个值,因为返回的值将丢失 (issue 3484 , issue 3869 )

  • Spider 对象现在引发 AttributeError 如果他们没有 start_urls 属性或重新实现 start_requests ,但是有一个 start_url 属性 (issue 4133 , issue 4170 )

  • BaseItemExporter 子类现在可以使用 super().__init__(**kwargs) 而不是 self._configure(kwargs) 在他们 __init__ 方法,通过 dont_fail=True 给父母 __init__ 方法(如果需要),并访问 kwargsself._kwargs 打电话给他们的父母之后 __init__ 方法 (issue 4193 , issue 4370 )

  • 一个新的 keep_fragments 参数 scrapy.utils.request.request_fingerprint() 允许为URL中包含不同片段的请求生成不同的指纹 (issue 4104 )

  • 下载处理程序(请参见 DOWNLOAD_HANDLERS )现在可以使用 from_settingsfrom_crawler 其他垃圾组件已经支持的类方法 (issue 4126 )

  • scrapy.utils.python.MutableChain.__iter__ now returns self,
    allowing it to be used as a sequence
    (issue 4153)

错误修复¶

  • 这个 crawl 当爬行开始之前发生异常时,命令现在也会退出,退出代码为1 (issue 4175 , issue 4207 )

  • LinkExtractor.extract_links 不再对来自非UTF-8响应的查询字符串或url重新编码为UTF-8 (issue 998 , issue 1403 , issue 1949 , issue 4321 )

  • 第一个spider中间件(请参见 SPIDER_MIDDLEWARES )现在还处理从作为生成器的回调中引发的异常 (issue 4260 , issue 4272 )

  • 重定向到以3个斜杠开头的URL (/// )现在支持 (issue 4032 , issue 4042 )

  • Request 不再接受字符串作为 url 只是因为他们有结肠 (issue 2552 , issue 4094 )

  • The correct encoding is now used for attach names in
    MailSender (issue 4229, issue 4239)

  • RFPDupeFilter ,默认的 DUPEFILTER_CLASS ,不再写入额外的 \r 窗口中每行的字符,这使得 requests.seen 在那个平台上不必要的大文件 (issue 4283 )

  • Z shell自动完成现在查找 .html 文件,而不是 .http 文件,包括 -h 命令行开关 (issue 4122 , issue 4291 )

  • 将项目添加到 scrapy.utils.datatypes.LocalCache 没有 limit 定义不再引发 TypeError 例外 (issue 4123 )

  • Fixed a typo in the message of the ValueError exception raised when
    scrapy.utils.misc.create_instance() gets both settings and
    crawler set to None (issue 4128)

文档¶

  • API文档现在链接到相应源代码的联机、语法突出显示视图 (issue 4148 )

  • 链接到不存在的文档页现在允许访问侧栏 (issue 4152 , issue 4169 )

  • 文档中的交叉引用现在在悬停时显示工具提示 (issue 4173 , issue 4183 )

  • Improved the documentation about LinkExtractor.extract_links and
    simplified 链接提取器 (issue 4045)

  • 阐明了 ItemLoader.item 作品 (issue 3574 , issue 4099 )

  • Clarified that logging.basicConfig() should not be used when also
    using CrawlerProcess (issue 2149,
    issue 2352, issue 3146, issue 3960)

  • Clarified the requirements for Request objects
    when using persistence (issue 4124,
    issue 4139)

  • Clarified how to install a custom image pipeline (issue 4034, issue 4252)

  • 修复了 file_path 方法在 media pipeline 实例 (issue 4290 )

  • 涵盖了一个影响自定义的Scrapy 1.7.0中向后不兼容的更改 scrapy.core.scheduler.Scheduler 子类 (issue 4274 )

  • 改进了 README.rstCODE_OF_CONDUCT.md 文件夹 (issue 4059 )

  • 文档示例现在作为测试套件的一部分进行了检查,我们已经修复了检测到的一些问题 (issue 4142 , issue 4146 , issue 4171 , issue 4184 , issue 4190 )

  • 修复了逻辑问题,断开的链接和打字错误 (issue 4247 , issue 4258 , issue 4282 , issue 4288 , issue 4305 , issue 4308 , issue 4323 , issue 4338 , issue 4359 , issue 4361 )

  • 在引用 __init__ 对象的方法 (issue 4086 , issue 4088 )

  • Fixed an inconsistency between code and output in Scrapy一目了然
    (issue 4213)

  • 扩展 intersphinx 使用 (issue 4147 , issue 4172 , issue 4185 , issue 4194 , issue 4197 )

  • 我们现在使用Python的最新版本来构建文档 (issue 4140 , issue 4249 )

  • 已清理文档 (issue 4143 , issue 4275 )

质量保证¶

  • 重新启用代理 CONNECT 测验 (issue 2545 , issue 4114 )

  • 补充 Bandit 对我们的测试套件进行安全检查 (issue 4162 , issue 4181 )

  • 补充 Flake8 对我们的测试套件进行样式检查,并应用了许多相应的更改 (issue 3944 , issue 3945 , issue 4137 , issue 4157 , issue 4167 , issue 4174 , issue 4186 , issue 4195 , issue 4238 , issue 4246 , issue 4355 , issue 4360 , issue 4365 )

  • 提高测试覆盖率 (issue 4097 , issue 4218 , issue 4236 )

  • 开始报告最慢的测试,并改进了其中一些测试的性能 (issue 4163 , issue 4164 )

  • 修复了损坏的测试并重构了一些测试 (issue 4014 , issue 4095 , issue 4244 , issue 4268 , issue 4372 )

  • 修改了 tox 配置以允许使用任何Python版本运行测试,请运行 Bandit 和 Flake8 默认情况下进行测试,并以编程方式强制执行最低tox版本 (issue 4179 )

  • 已清理代码 (issue 3937 , issue 4208 , issue 4209 , issue 4210 , issue 4212 , issue 4369 , issue 4376 , issue 4378 )

计划程序队列类的更改¶

以下更改可能会影响所有类型的任何自定义队列类:

  • 这个 push 方法不再接收包含 request.priority * -1 . 如果需要该值,请从第一个位置参数获取它, request ,或者使用新的 priority() 方法在 scrapy.core.scheduler.ScrapyPriorityQueue 子类。

以下更改可能会影响自定义优先级队列类:

  • __init__ 方法或 from_crawlerfrom_settings 类方法:

    • 用于包含工厂函数的参数, qfactory ,现在作为名为的关键字参数传递 downstream_queue_cls .

    • 添加了一个新的关键字参数: key . 对于内存队列,它始终是空字符串,并指示 JOB_DIR 磁盘队列的值。

    • 包含上一次爬网数据的磁盘队列的参数, startpriosslot_startprios ,现在作为名为的关键字参数传递 startprios .

    • 这个 serialize 不再传递参数。在写入磁盘之前,磁盘队列类必须自己处理请求序列化,使用 request_to_dict()request_from_dict() 中的函数 scrapy.utils.reqser 模块。

以下更改可能会影响自定义磁盘和内存队列类:

  • 签名 __init__ 方法现在 __init__(self, crawler, key) .

以下更改特别影响 ScrapyPriorityQueueDownloaderAwarePriorityQueue 类来自 scrapy.core.scheduler 并可能影响子类:

  • __init__ 方法,则应用上述大多数更改。

    __init__ 仍然可以接收所有参数作为位置参数,但是:

    • downstream_queue_cls ,取代了 qfactory ,必须以不同的方式实例化。

      qfactory 已用优先级值(整数)实例化。

      实例 downstream_queue_cls 应该使用新的 ScrapyPriorityQueue.qfactoryDownloaderAwarePriorityQueue.pqfactory 方法。

    • 新的 key 参数替换了 startprios 参数1位于右侧。

  • 已添加以下类属性:

    • crawler

    • downstream_queue_cls (详见上文)

    • key (详见上文)

  • 这个 serialize 属性已被删除(以上详细信息)

以下更改特别影响 ScrapyPriorityQueue 类并可能影响子类:

  • 一个新的 priority() 已添加方法,该方法在给定请求时返回 request.priority * -1 .

    它用于 push() 以弥补它的删除 priority 参数。

  • 这个 spider 属性已删除。使用 crawler.spider 相反。

以下更改特别影响 DownloaderAwarePriorityQueue 类并可能影响子类:

  • 一个新的 pqueues 属性提供下载程序插槽名称到相应实例的映射 downstream_queue_cls .

(issue 3884 )

1.8.0(2019-10-28)¶

亮点:

  • 放弃了对Python3.4的支持并更新了最低要求;使Python3.8正式支持

  • 新的 Request.from_curl 类方法

  • 新的 ROBOTSTXT_PARSERROBOTSTXT_USER_AGENT 设置

  • 新的 DOWNLOADER_CLIENT_TLS_CIPHERSDOWNLOADER_CLIENT_TLS_VERBOSE_LOGGING 设置

向后不兼容的更改¶

  • 不再支持Python3.4,Scrapy的一些最低要求也发生了变化:

    • cssselect 0.9.1

    • cryptography 2.0

    • lxml 3.5.0

    • pyOpenSSL 16.2.0

    • queuelib 1.4.2

    • service_identity 16.0.0

    • six 1.10.0

    • Twisted 17.9.0(16.0.0,使用Python 2)

    • zope.interface 4.1.3

    (issue 3892 )

  • JSONRequest 现在叫做 JsonRequest 为了与类似的类保持一致 (issue 3929 , issue 3982 )

  • If you are using a custom context factory
    (DOWNLOADER_CLIENTCONTEXTFACTORY), its __init__ method must
    accept two new parameters: tls_verbose_logging and tls_ciphers
    (issue 2111, issue 3392, issue 3442, issue 3450)

  • ItemLoader 它的输入值现在变成了:

    >>> item = MyItem()
    >>> item['field'] = 'value1'
    >>> loader = ItemLoader(item=item)
    >>> item['field']
    ['value1']
    

    这是允许向现有字段添加值所必需的 (loader.add_value('field', 'value2')

    (issue 3804 , issue 3819 , issue 3897 , issue 3976 , issue 3998 , issue 4036 )

也见 折旧清除 下面。

新特点¶

  • A new Request.from_curl class
    method allows creating a request from a cURL command (issue 2985, issue 3862)

  • A new ROBOTSTXT_PARSER setting allows choosing which robots.txt
    parser to use. It includes built-in support for
    RobotFileParser,
    Protego (default), Reppy, and
    Robotexclusionrulesparser, and allows you to
    implement support for additional parsers (issue 754, issue 2669,
    issue 3796, issue 3935, issue 3969, issue 4006)

  • 一个新的 ROBOTSTXT_USER_AGENT 设置允许定义要用于的单独的用户代理字符串 robots.txt 解析 (issue 3931 , issue 3966 )

  • Rule 不再需要 LinkExtractor 参数 (issue 781 , issue 4016 )

  • 使用新的 DOWNLOADER_CLIENT_TLS_CIPHERS 设置以自定义默认HTTP/1.1下载程序使用的TLS/SSL密码 (issue 3392 , issue 3442 )

  • 设置新的 DOWNLOADER_CLIENT_TLS_VERBOSE_LOGGING 设置为 True 在建立HTTPS连接后启用有关TLS连接参数的调试级别消息 (issue 2111 , issue 3450 )

  • Callbacks that receive keyword arguments
    (see Request.cb_kwargs) can now be
    tested using the new @cb_kwargs
    spider contract (issue 3985, issue 3988)

  • 当A @scrapes 蜘蛛合同失败,所有丢失的字段现在报告 (issue 766 , issue 3939 )

  • Custom log formats can now drop messages by
    having the corresponding methods of the configured LOG_FORMATTER
    return None (issue 3984, issue 3987)

  • 一个大大改进的完成定义现在可用于 Zsh (issue 4069 )

错误修复¶

  • ItemLoader.load_item() 以后不再打电话给 ItemLoader.get_output_value()ItemLoader.load_item() 返回空数据 (issue 3804 , issue 3819 , issue 3897 , issue 3976 , issue 3998 , issue 4036 )

  • 固定的 DummyStatsCollector 提高 TypeError 例外 (issue 4007 , issue 4052 )

  • FilesPipeline.file_path and
    ImagesPipeline.file_path no longer choose
    file extensions that are not registered with IANA (issue 1287,
    issue 3953, issue 3954)

  • 使用时 botocore 为了在S3中持久化文件,所有支持botocore的头现在都被正确地映射了 (issue 3904 , issue 3905 )

  • FTP密码 FEED_URI 包含百分比转义字符的字符现在已正确解码 (issue 3941 )

  • 中的内存处理和错误处理问题 scrapy.utils.ssl.get_temp_key_info() 已修复 (issue 3920 )

文档¶

  • The documentation now covers how to define and configure a custom log
    format
    (issue 3616, issue 3660)

  • API documentation added for MarshalItemExporter
    and PythonItemExporter (issue 3973)

  • API documentation added for BaseItem and
    ItemMeta (issue 3999)

  • 小文档修复 (issue 2998 , issue 3398 , issue 3597 , issue 3894 , issue 3934 , issue 3978 , issue 3993 , issue 4022 , issue 4028 , issue 4033 , issue 4046 , issue 4050 , issue 4055 , issue 4056 , issue 4061 , issue 4072 , issue 4071 , issue 4079 , issue 4081 , issue 4089 , issue 4093 )

折旧清除¶

  • scrapy.xlib 已删除 (issue 4015 )

贬抑¶

  • 这个 LevelDB 存储后端 (scrapy.extensions.httpcache.LeveldbCacheStorage 的) HttpCacheMiddleware 被贬低 (issue 4085 , issue 4092 )

  • 使用无证文件 SCRAPY_PICKLED_SETTINGS_TO_OVERRIDE 环境变量已弃用 (issue 3910 )

  • scrapy.item.DictItem 已弃用,请使用 Item 相反 (issue 3999 )

其他变化¶

  • 持续集成测试所涵盖的可选废料需求的最低版本已更新:

    • botocore 1.3.23

    • Pillow 3.4.2

    但这些要求的可选版本不一定有效 (issue 3892 )

  • 用于bug报告和功能请求的GitHub模板 (issue 3126 , issue 3471 , issue 3749 , issue 3754 )

  • 持续集成修复 (issue 3923 )

  • 代码清理 (issue 3391 , issue 3907 , issue 3946 , issue 3950 , issue 4023 , issue 4031 )

向后不兼容的更改¶

  • 不再支持Python3.4,Scrapy的一些最低要求也发生了变化:

    • cssselect 0.9.1

    • cryptography 2.0

    • lxml 3.5.0

    • pyOpenSSL 16.2.0

    • queuelib 1.4.2

    • service_identity 16.0.0

    • six 1.10.0

    • Twisted 17.9.0(16.0.0,使用Python 2)

    • zope.interface 4.1.3

    (issue 3892 )

  • JSONRequest 现在叫做 JsonRequest 为了与类似的类保持一致 (issue 3929 , issue 3982 )

  • If you are using a custom context factory
    (DOWNLOADER_CLIENTCONTEXTFACTORY), its __init__ method must
    accept two new parameters: tls_verbose_logging and tls_ciphers
    (issue 2111, issue 3392, issue 3442, issue 3450)

  • ItemLoader 它的输入值现在变成了:

    >>> item = MyItem()
    >>> item['field'] = 'value1'
    >>> loader = ItemLoader(item=item)
    >>> item['field']
    ['value1']
    

    这是允许向现有字段添加值所必需的 (loader.add_value('field', 'value2')

    (issue 3804 , issue 3819 , issue 3897 , issue 3976 , issue 3998 , issue 4036 )

也见 折旧清除 下面。

新特点¶

  • A new Request.from_curl class
    method allows creating a request from a cURL command (issue 2985, issue 3862)

  • A new ROBOTSTXT_PARSER setting allows choosing which robots.txt
    parser to use. It includes built-in support for
    RobotFileParser,
    Protego (default), Reppy, and
    Robotexclusionrulesparser, and allows you to
    implement support for additional parsers (issue 754, issue 2669,
    issue 3796, issue 3935, issue 3969, issue 4006)

  • 一个新的 ROBOTSTXT_USER_AGENT 设置允许定义要用于的单独的用户代理字符串 robots.txt 解析 (issue 3931 , issue 3966 )

  • Rule 不再需要 LinkExtractor 参数 (issue 781 , issue 4016 )

  • 使用新的 DOWNLOADER_CLIENT_TLS_CIPHERS 设置以自定义默认HTTP/1.1下载程序使用的TLS/SSL密码 (issue 3392 , issue 3442 )

  • 设置新的 DOWNLOADER_CLIENT_TLS_VERBOSE_LOGGING 设置为 True 在建立HTTPS连接后启用有关TLS连接参数的调试级别消息 (issue 2111 , issue 3450 )

  • Callbacks that receive keyword arguments
    (see Request.cb_kwargs) can now be
    tested using the new @cb_kwargs
    spider contract (issue 3985, issue 3988)

  • 当A @scrapes 蜘蛛合同失败,所有丢失的字段现在报告 (issue 766 , issue 3939 )

  • Custom log formats can now drop messages by
    having the corresponding methods of the configured LOG_FORMATTER
    return None (issue 3984, issue 3987)

  • 一个大大改进的完成定义现在可用于 Zsh (issue 4069 )

错误修复¶

  • ItemLoader.load_item() 以后不再打电话给 ItemLoader.get_output_value()ItemLoader.load_item() 返回空数据 (issue 3804 , issue 3819 , issue 3897 , issue 3976 , issue 3998 , issue 4036 )

  • 固定的 DummyStatsCollector 提高 TypeError 例外 (issue 4007 , issue 4052 )

  • FilesPipeline.file_path and
    ImagesPipeline.file_path no longer choose
    file extensions that are not registered with IANA (issue 1287,
    issue 3953, issue 3954)

  • 使用时 botocore 为了在S3中持久化文件,所有支持botocore的头现在都被正确地映射了 (issue 3904 , issue 3905 )

  • FTP密码 FEED_URI 包含百分比转义字符的字符现在已正确解码 (issue 3941 )

  • 中的内存处理和错误处理问题 scrapy.utils.ssl.get_temp_key_info() 已修复 (issue 3920 )

文档¶

  • The documentation now covers how to define and configure a custom log
    format
    (issue 3616, issue 3660)

  • API documentation added for MarshalItemExporter
    and PythonItemExporter (issue 3973)

  • API documentation added for BaseItem and
    ItemMeta (issue 3999)

  • 小文档修复 (issue 2998 , issue 3398 , issue 3597 , issue 3894 , issue 3934 , issue 3978 , issue 3993 , issue 4022 , issue 4028 , issue 4033 , issue 4046 , issue 4050 , issue 4055 , issue 4056 , issue 4061 , issue 4072 , issue 4071 , issue 4079 , issue 4081 , issue 4089 , issue 4093 )

折旧清除¶

  • scrapy.xlib 已删除 (issue 4015 )

贬抑¶

  • 这个 LevelDB 存储后端 (scrapy.extensions.httpcache.LeveldbCacheStorage 的) HttpCacheMiddleware 被贬低 (issue 4085 , issue 4092 )

  • 使用无证文件 SCRAPY_PICKLED_SETTINGS_TO_OVERRIDE 环境变量已弃用 (issue 3910 )

  • scrapy.item.DictItem 已弃用,请使用 Item 相反 (issue 3999 )

其他变化¶

  • 持续集成测试所涵盖的可选废料需求的最低版本已更新:

    • botocore 1.3.23

    • Pillow 3.4.2

    但这些要求的可选版本不一定有效 (issue 3892 )

  • 用于bug报告和功能请求的GitHub模板 (issue 3126 , issue 3471 , issue 3749 , issue 3754 )

  • 持续集成修复 (issue 3923 )

  • 代码清理 (issue 3391 , issue 3907 , issue 3946 , issue 3950 , issue 4023 , issue 4031 )

刮伤1.7.4(2019-10-21)¶

Revert the fix for issue 3804 (issue 3819), which has a few undesired
side effects (issue 3897, issue 3976).

因此,当项目加载器用项目初始化时, ItemLoader.load_item() 再次打电话给 ItemLoader.get_output_value()ItemLoader.load_item() 返回空数据。

1.7.3(2019-08-01)¶

对python3.4强制执行lxml4.3.5或更低版本 (issue 3912 , issue 3918 )

Scrapy 1.7.2(2019-07-23)¶

修复python 2支持 (issue 3889 , issue 3893 , issue 3896 )

Scrapy 1.7.1(2019-07-18)¶

重新包装Scrapy1.7.0,这在Pypi中丢失了一些变化。

Scrapy 1.7.0(2019-07-18)¶

注解

确保安装Scrapy 1.7.1。pypi中的scrapy 1.7.0包是错误提交标记的结果,不包括下面描述的所有更改。

亮点:

  • 针对多个域的爬虫改进

  • 将参数传递给回调的更简单方法

  • JSON请求的新类

  • 基于规则的蜘蛛改进

  • 饲料输出的新功能

向后不兼容的更改¶

  • 429 现在是 RETRY_HTTP_CODES 默认设置

    这种变化是 向后不兼容 .如果你不想再试一次 429 ,必须重写 RETRY_HTTP_CODES 因此。

  • CrawlerCrawlerRunner.crawlCrawlerRunner.create_crawler 不再接受 Spider 子类实例,它们只接受 Spider 立即子类。

    Spider 子类实例从来没有打算工作,它们也没有像人们预期的那样工作:而不是使用 Spider 子类实例,它们的 from_crawler 方法以生成新实例。

  • 的非默认值 SCHEDULER_PRIORITY_QUEUE 设置可能停止工作。调度程序优先级队列类现在需要处理 Request 对象而不是任意的python数据结构。

  • 额外的 crawler 参数已添加到 __init__ 方法 Scheduler 班级。自定义调度程序子类不接受其 __init__ 方法可能会因为此更改而中断。

    有关详细信息,请参阅 SCHEDULER .

也见 折旧清除 下面。

新特点¶

  • 新的调度程序优先级队列, scrapy.pqueues.DownloaderAwarePriorityQueue ,可能是 enabled 对于以多个Web域为目标的爬虫的显著调度改进,不需要 CONCURRENT_REQUESTS_PER_IP 支持 (issue 3520 )

  • 一个新的 Request.cb_kwargs 属性为将关键字参数传递给回调方法提供了一种更清晰的方法 (issue 1138 , issue 3563 )

  • 一个新的 JSONRequest 类提供了一种更方便的方法来构建JSON请求 (issue 3504 , issue 3505 )

  • A process_request 已将回调传递给 Rule __init__ 方法现在接收 Response 作为第二个参数发出请求的对象 (issue 3682 )

  • 一个新的 restrict_text 的参数 LinkExtractor __init__ 方法允许通过链接文本筛选链接 (issue 3622 , issue 3635 )

  • 一个新的 FEED_STORAGE_S3_ACL 设置允许为导出到AmazonS3的源定义自定义ACL (issue 3607 )

  • 一个新的 FEED_STORAGE_FTP_ACTIVE 设置允许对导出到FTP服务器的源使用FTP的活动连接模式 (issue 3829 )

  • 一个新的 METAREFRESH_IGNORE_TAGS 设置允许覆盖在搜索触发重定向的HTML元标记响应时忽略哪些HTML标记。 (issue 1422 , issue 3768 )

  • 一个新的 redirect_reasons 请求元键在每次跟踪的重定向之后公开原因(状态代码、元刷新) (issue 3581 , issue 3687 )

  • The SCRAPY_CHECK variable is now set to the true string during runs
    of the check command, which allows detecting contract
    check runs from code
    (issue 3704,
    issue 3739)

  • A new Item.deepcopy() method makes it
    easier to deep-copy items (issue 1493,
    issue 3671)

  • CoreStats 同时记录 elapsed_time_seconds 现在 (issue 3638 )

  • 例外 ItemLoader input and output processors 现在更详细了 (issue 3836 , issue 3840 )

  • CrawlerCrawlerRunner.crawlCrawlerRunner.create_crawler 如果他们收到 Spider 子类实例而不是子类本身 (issue 2283 , issue 3610 , issue 3872 )

错误修复¶

  • process_spider_exception() 现在也为生成器调用 (issue 220 , issue 2061 )

  • 系统异常,如 KeyboardInterrupt 不再被抓住 (issue 3726 )

  • ItemLoader.load_item() 以后不再打电话给 ItemLoader.get_output_value()ItemLoader.load_item() 返回空数据 (issue 3804 , issue 3819 )

  • The images pipeline (ImagesPipeline) no
    longer ignores these Amazon S3 settings: AWS_ENDPOINT_URL,
    AWS_REGION_NAME, AWS_USE_SSL, AWS_VERIFY
    (issue 3625)

  • 修复了内存泄漏 scrapy.pipelines.media.MediaPipeline 例如,影响来自定制中间商的非200响应和异常 (issue 3813 )

  • 带有私人回调的请求现在正确地从磁盘上取消了序列化 (issue 3790 )

  • FormRequest.from_response() 现在处理诸如主要Web浏览器之类的无效方法 (issue 3777 , issue 3794 )

文档¶

  • 一个新话题, 选择动态加载的内容 ,介绍了读取动态加载数据的推荐方法 (issue 3703 )

  • 宽爬行 现在提供有关内存使用的信息 (issue 1264 , issue 3866 )

  • The documentation of Rule now covers how to access
    the text of a link when using CrawlSpider
    (issue 3711, issue 3712)

  • A new section, 编写自己的存储后端, covers writing a custom
    cache storage backend for
    HttpCacheMiddleware
    (issue 3683, issue 3692)

  • 一个新的 FAQ 入口, 如何在项目管道中将项目拆分为多个项目? ,解释当要从项目管道中将项目拆分为多个项目时要执行的操作。 (issue 2240 , issue 3672 )

  • 更新了 FAQ entry about crawl order 解释为什么前几个请求很少遵循所需的顺序 (issue 1739 , issue 3621 )

  • 这个 LOGSTATS_INTERVAL 设置 (issue 3730 ) FilesPipeline.file_pathImagesPipeline.file_path 方法 (issue 2253 , issue 3609 ) Crawler.stop() 方法 (issue 3842 )现在记录在案

  • 文档中某些令人困惑或误导的部分现在更加清晰了 (issue 1347 , issue 1789 , issue 2289 , issue 3069 , issue 3615 , issue 3626 , issue 3668 , issue 3670 , issue 3673 , issue 3728 , issue 3762 , issue 3861 , issue 3882 )

  • 小文档修复 (issue 3648 , issue 3649 , issue 3662 , issue 3674 , issue 3676 , issue 3694 , issue 3724 , issue 3764 , issue 3767 , issue 3791 , issue 3797 , issue 3806 , issue 3812 )

折旧清除¶

已删除以下已弃用的API (issue 3578 ):

  • scrapy.conf (使用) Crawler.settings

  • scrapy.core.downloader.handlers

    • http.HttpDownloadHandler (使用) http10.HTTP10DownloadHandler

  • scrapy.loader.ItemLoader._get_values (使用) _get_xpathvalues

  • scrapy.loader.XPathItemLoader (使用) ItemLoader

  • scrapy.log (见 登录

  • scrapy.pipelines

    • files.FilesPipeline.file_key (使用) file_path

    • images.ImagesPipeline.file_key (使用) file_path

    • images.ImagesPipeline.image_key (使用) file_path

    • images.ImagesPipeline.thumb_key (使用) thumb_path

  • 从两者 scrapy.selectorscrapy.selector.lxmlsel

    • HtmlXPathSelector (使用) Selector

    • XmlXPathSelector (使用) Selector

    • XPathSelector (使用) Selector

    • XPathSelectorList (使用) Selector

  • scrapy.selector.csstranslator

    • ScrapyGenericTranslator (使用) parsel.csstranslator.GenericTranslator)

    • ScrapyHTMLTranslator (使用) parsel.csstranslator.HTMLTranslator)

    • ScrapyXPathExpr (使用) parsel.csstranslator.XPathExpr)

  • Selector

    • _root (两个 __init__ 方法参数和对象属性,使用 root

    • extract_unquoted (使用) getall

    • select (使用) xpath

  • SelectorList

    • extract_unquoted (使用) getall

    • select (使用) xpath

    • x (使用) xpath

  • scrapy.spiders.BaseSpider (使用) Spider

  • Spider (和子类):

    • DOWNLOAD_DELAY (使用) download_delay

    • set_crawler (使用) from_crawler()

  • scrapy.spiders.spiders (使用) SpiderLoader

  • scrapy.telnet (使用) scrapy.extensions.telnet

  • scrapy.utils.python

    • str_to_unicode (使用) to_unicode

    • unicode_to_str (使用) to_bytes

  • scrapy.utils.response.body_or_str

以下不推荐使用的设置也已删除 (issue 3578 ):

  • SPIDER_MANAGER_CLASS (使用) SPIDER_LOADER_CLASS

贬抑¶

  • 这个 queuelib.PriorityQueue 价值 SCHEDULER_PRIORITY_QUEUE 设置已弃用。使用 scrapy.pqueues.ScrapyPriorityQueue 相反。

  • process_request 回调传递给 Rule 不接受两个参数的将被弃用。

  • 以下模块已弃用:

    • scrapy.utils.http (使用) w3lib.http )

    • scrapy.utils.markup (使用) w3lib.html )

    • scrapy.utils.multipart (使用) urllib3 )

  • 这个 scrapy.utils.datatypes.MergeDict 对于python 3代码基,不推荐使用类。使用 ChainMap 相反。 (issue 3878 )

  • 这个 scrapy.utils.gz.is_gzipped 函数已弃用。使用 scrapy.utils.gz.gzip_magic_number 相反。

其他变化¶

  • It is now possible to run all tests from the same tox environment in
    parallel; the documentation now covers this and other ways to run
    tests
    (issue 3707)

  • 现在可以生成API文档覆盖率报告 (issue 3806 , issue 3810 , issue 3860 )

  • The documentation policies now require
    docstrings (issue 3701) that follow PEP 257 (issue 3748)

  • 内部修复和清理 (issue 3629 , issue 3643 , issue 3684 , issue 3698 , issue 3734 , issue 3735 , issue 3736 , issue 3737 , issue 3809 , issue 3821 , issue 3825 , issue 3827 , issue 3833 , issue 3857 , issue 3877 )

向后不兼容的更改¶

  • 429 现在是 RETRY_HTTP_CODES 默认设置

    这种变化是 向后不兼容 .如果你不想再试一次 429 ,必须重写 RETRY_HTTP_CODES 因此。

  • CrawlerCrawlerRunner.crawlCrawlerRunner.create_crawler 不再接受 Spider 子类实例,它们只接受 Spider 立即子类。

    Spider 子类实例从来没有打算工作,它们也没有像人们预期的那样工作:而不是使用 Spider 子类实例,它们的 from_crawler 方法以生成新实例。

  • 的非默认值 SCHEDULER_PRIORITY_QUEUE 设置可能停止工作。调度程序优先级队列类现在需要处理 Request 对象而不是任意的python数据结构。

  • 额外的 crawler 参数已添加到 __init__ 方法 Scheduler 班级。自定义调度程序子类不接受其 __init__ 方法可能会因为此更改而中断。

    有关详细信息,请参阅 SCHEDULER .

也见 折旧清除 下面。

新特点¶

  • 新的调度程序优先级队列, scrapy.pqueues.DownloaderAwarePriorityQueue ,可能是 enabled 对于以多个Web域为目标的爬虫的显著调度改进,不需要 CONCURRENT_REQUESTS_PER_IP 支持 (issue 3520 )

  • 一个新的 Request.cb_kwargs 属性为将关键字参数传递给回调方法提供了一种更清晰的方法 (issue 1138 , issue 3563 )

  • 一个新的 JSONRequest 类提供了一种更方便的方法来构建JSON请求 (issue 3504 , issue 3505 )

  • A process_request 已将回调传递给 Rule __init__ 方法现在接收 Response 作为第二个参数发出请求的对象 (issue 3682 )

  • 一个新的 restrict_text 的参数 LinkExtractor __init__ 方法允许通过链接文本筛选链接 (issue 3622 , issue 3635 )

  • 一个新的 FEED_STORAGE_S3_ACL 设置允许为导出到AmazonS3的源定义自定义ACL (issue 3607 )

  • 一个新的 FEED_STORAGE_FTP_ACTIVE 设置允许对导出到FTP服务器的源使用FTP的活动连接模式 (issue 3829 )

  • 一个新的 METAREFRESH_IGNORE_TAGS 设置允许覆盖在搜索触发重定向的HTML元标记响应时忽略哪些HTML标记。 (issue 1422 , issue 3768 )

  • 一个新的 redirect_reasons 请求元键在每次跟踪的重定向之后公开原因(状态代码、元刷新) (issue 3581 , issue 3687 )

  • The SCRAPY_CHECK variable is now set to the true string during runs
    of the check command, which allows detecting contract
    check runs from code
    (issue 3704,
    issue 3739)

  • A new Item.deepcopy() method makes it
    easier to deep-copy items (issue 1493,
    issue 3671)

  • CoreStats 同时记录 elapsed_time_seconds 现在 (issue 3638 )

  • 例外 ItemLoader input and output processors 现在更详细了 (issue 3836 , issue 3840 )

  • CrawlerCrawlerRunner.crawlCrawlerRunner.create_crawler 如果他们收到 Spider 子类实例而不是子类本身 (issue 2283 , issue 3610 , issue 3872 )

错误修复¶

  • process_spider_exception() 现在也为生成器调用 (issue 220 , issue 2061 )

  • 系统异常,如 KeyboardInterrupt 不再被抓住 (issue 3726 )

  • ItemLoader.load_item() 以后不再打电话给 ItemLoader.get_output_value()ItemLoader.load_item() 返回空数据 (issue 3804 , issue 3819 )

  • The images pipeline (ImagesPipeline) no
    longer ignores these Amazon S3 settings: AWS_ENDPOINT_URL,
    AWS_REGION_NAME, AWS_USE_SSL, AWS_VERIFY
    (issue 3625)

  • 修复了内存泄漏 scrapy.pipelines.media.MediaPipeline 例如,影响来自定制中间商的非200响应和异常 (issue 3813 )

  • 带有私人回调的请求现在正确地从磁盘上取消了序列化 (issue 3790 )

  • FormRequest.from_response() 现在处理诸如主要Web浏览器之类的无效方法 (issue 3777 , issue 3794 )

文档¶

  • 一个新话题, 选择动态加载的内容 ,介绍了读取动态加载数据的推荐方法 (issue 3703 )

  • 宽爬行 现在提供有关内存使用的信息 (issue 1264 , issue 3866 )

  • The documentation of Rule now covers how to access
    the text of a link when using CrawlSpider
    (issue 3711, issue 3712)

  • A new section, 编写自己的存储后端, covers writing a custom
    cache storage backend for
    HttpCacheMiddleware
    (issue 3683, issue 3692)

  • 一个新的 FAQ 入口, 如何在项目管道中将项目拆分为多个项目? ,解释当要从项目管道中将项目拆分为多个项目时要执行的操作。 (issue 2240 , issue 3672 )

  • 更新了 FAQ entry about crawl order 解释为什么前几个请求很少遵循所需的顺序 (issue 1739 , issue 3621 )

  • 这个 LOGSTATS_INTERVAL 设置 (issue 3730 ) FilesPipeline.file_pathImagesPipeline.file_path 方法 (issue 2253 , issue 3609 ) Crawler.stop() 方法 (issue 3842 )现在记录在案

  • 文档中某些令人困惑或误导的部分现在更加清晰了 (issue 1347 , issue 1789 , issue 2289 , issue 3069 , issue 3615 , issue 3626 , issue 3668 , issue 3670 , issue 3673 , issue 3728 , issue 3762 , issue 3861 , issue 3882 )

  • 小文档修复 (issue 3648 , issue 3649 , issue 3662 , issue 3674 , issue 3676 , issue 3694 , issue 3724 , issue 3764 , issue 3767 , issue 3791 , issue 3797 , issue 3806 , issue 3812 )

折旧清除¶

已删除以下已弃用的API (issue 3578 ):

  • scrapy.conf (使用) Crawler.settings

  • scrapy.core.downloader.handlers

    • http.HttpDownloadHandler (使用) http10.HTTP10DownloadHandler

  • scrapy.loader.ItemLoader._get_values (使用) _get_xpathvalues

  • scrapy.loader.XPathItemLoader (使用) ItemLoader

  • scrapy.log (见 登录

  • scrapy.pipelines

    • files.FilesPipeline.file_key (使用) file_path

    • images.ImagesPipeline.file_key (使用) file_path

    • images.ImagesPipeline.image_key (使用) file_path

    • images.ImagesPipeline.thumb_key (使用) thumb_path

  • 从两者 scrapy.selectorscrapy.selector.lxmlsel

    • HtmlXPathSelector (使用) Selector

    • XmlXPathSelector (使用) Selector

    • XPathSelector (使用) Selector

    • XPathSelectorList (使用) Selector

  • scrapy.selector.csstranslator

    • ScrapyGenericTranslator (使用) parsel.csstranslator.GenericTranslator)

    • ScrapyHTMLTranslator (使用) parsel.csstranslator.HTMLTranslator)

    • ScrapyXPathExpr (使用) parsel.csstranslator.XPathExpr)

  • Selector

    • _root (两个 __init__ 方法参数和对象属性,使用 root

    • extract_unquoted (使用) getall

    • select (使用) xpath

  • SelectorList

    • extract_unquoted (使用) getall

    • select (使用) xpath

    • x (使用) xpath

  • scrapy.spiders.BaseSpider (使用) Spider

  • Spider (和子类):

    • DOWNLOAD_DELAY (使用) download_delay

    • set_crawler (使用) from_crawler()

  • scrapy.spiders.spiders (使用) SpiderLoader

  • scrapy.telnet (使用) scrapy.extensions.telnet

  • scrapy.utils.python

    • str_to_unicode (使用) to_unicode

    • unicode_to_str (使用) to_bytes

  • scrapy.utils.response.body_or_str

以下不推荐使用的设置也已删除 (issue 3578 ):

  • SPIDER_MANAGER_CLASS (使用) SPIDER_LOADER_CLASS

贬抑¶

  • 这个 queuelib.PriorityQueue 价值 SCHEDULER_PRIORITY_QUEUE 设置已弃用。使用 scrapy.pqueues.ScrapyPriorityQueue 相反。

  • process_request 回调传递给 Rule 不接受两个参数的将被弃用。

  • 以下模块已弃用:

    • scrapy.utils.http (使用) w3lib.http )

    • scrapy.utils.markup (使用) w3lib.html )

    • scrapy.utils.multipart (使用) urllib3 )

  • 这个 scrapy.utils.datatypes.MergeDict 对于python 3代码基,不推荐使用类。使用 ChainMap 相反。 (issue 3878 )

  • 这个 scrapy.utils.gz.is_gzipped 函数已弃用。使用 scrapy.utils.gz.gzip_magic_number 相反。

其他变化¶

  • It is now possible to run all tests from the same tox environment in
    parallel; the documentation now covers this and other ways to run
    tests
    (issue 3707)

  • 现在可以生成API文档覆盖率报告 (issue 3806 , issue 3810 , issue 3860 )

  • The documentation policies now require
    docstrings (issue 3701) that follow PEP 257 (issue 3748)

  • 内部修复和清理 (issue 3629 , issue 3643 , issue 3684 , issue 3698 , issue 3734 , issue 3735 , issue 3736 , issue 3737 , issue 3809 , issue 3821 , issue 3825 , issue 3827 , issue 3833 , issue 3857 , issue 3877 )

Scrapy 1.6.0(2019-01-30)¶

亮点:

  • 更好的Windows支持;

  • Python 3.7兼容性;

  • 大的文档改进,包括从 .extract_first() + .extract() API到 .get() + .getall() 应用程序编程接口;

  • feed 导出、文件管道和媒体管道改进;

  • 更好的扩展性: item_errorrequest_reached_downloader 信号; from_crawler 支持Feed 导出、Feed 仓库和双过滤器。

  • scrapy.contracts 修复和新功能;

  • telnet控制台安全性改进,首次作为后端发布于 Scrapy 1.5.2(2019-01-22) ;

  • 清理弃用的代码;

  • 各种错误修复、小的新特性和整个代码库的可用性改进。

选择器API更改¶

虽然这些不是scrapy本身的更改,而是scrapy用于xpath/css选择器的parsel_u库中的更改,但这些更改在这里值得一提。Scrapy现在依赖于parsel>=1.5,并且Scrapy文档会更新以跟踪最近的 parsel API惯例。

最明显的变化是 .get().getall() 选择器方法现在比 .extract_first().extract() . 我们认为这些新方法会产生更简洁和可读的代码。见 extract()和extract_first()。 了解更多详细信息。

注解

目前有 no plans 贬低 .extract().extract_first() 方法。

另一个有用的新特性是 Selector.attribSelectorList.attrib 属性,这使得获取HTML元素的属性更加容易。见 选择元素属性 .

CSS选择器缓存在parsel>=1.5中,这使得在多次使用相同的css路径时更快。这是非常常见的情况下,剪贴蜘蛛:回调通常被称为多次,在不同的网页。

如果使用自定义 SelectorSelectorList 子类 backward incompatible Parsel中的更改可能会影响代码。见 parsel changelog 详细描述,以及完整的改进列表。

Telnet控制台¶

向后不兼容: Scrapy的telnet控制台现在需要用户名和密码。见 远程登录控制台 了解更多详细信息。此更改修复了 安全问题; 详细说明见 Scrapy 1.5.2(2019-01-22)

新的可扩展性功能¶

  • from_crawler 对Feed 导出和Feed仓库增加了支持。除此之外,它还允许从自定义饲料仓库和出口商访问零碎设置。( issue 1605 , issue 3348 )

  • from_crawler 对双过滤器增加了支持( issue 2956 );这允许从双面打印器访问设置或蜘蛛。

  • item_error 在管道中发生错误时激发( issue 3256;

  • request_reached_downloader 当下载程序收到新请求时激发;此信号可能有用,例如,对于自定义计划程序有用( issue 3393 )

  • 新建SiteMapSpider sitemap_filter() 方法,该方法允许根据SiteMapSpider子类中的属性选择站点地图条目( issue 3512 )

  • 下载程序处理程序的延迟加载现在是可选的;这使得在自定义下载程序处理程序中能够更好地处理初始化错误。( issue 3394 )

新的文件管道和媒体管道功能¶

  • 显示s3filestore的更多选项: AWS_ENDPOINT_URLAWS_USE_SSLAWS_VERIFYAWS_REGION_NAME . 例如,这允许使用可选的或自托管的与AWS兼容的提供程序( issue 2609 , issue 3548 )

  • 对谷歌云存储的ACL支持: FILES_STORE_GCS_ACLIMAGES_STORE_GCS_ACL ( issue 3199 )

scrapy.contracts 改进¶

  • 更好地处理合同代码中的异常( issue 3377;

  • dont_filter=True 用于合同请求,该请求允许使用相同的URL测试不同的回调( issue 3381;

  • request_cls 合同子类中的属性允许在合同中使用不同的请求类,例如FormRequest( issue 3383 )

  • 合同中的固定errback处理,例如,对于为返回非200响应的URL执行合同的情况( issue 3371 )

可用性改进¶

  • robotstxtmiddleware的更多统计信息( issue 3100 )

  • 信息日志级别用于显示telnet主机/端口( issue 3115 )

  • 在robotstxtmiddleware中将消息添加到ignorerequest( issue 3113 )

  • 更好地验证 url 论点 Response.follow ( issue 3131 )

  • 当spider初始化出错时,从scray命令返回非零退出代码 (issue 3226 )

  • 链接提取改进:“ftp”添加到方案列表中( issue 3152 )将“flv”添加到常用视频扩展( issue 3165 )

  • 禁用导出程序时出现更好的错误消息( issue 3358;

  • scrapy shell --help 提到本地文件所需的语法( ./file.html - issue 3496 .

  • Referer header值添加到rfpdupefilter日志消息中( issue 3588 )

错误修复¶

  • 修复了Windows下.csv导出中多余空行的问题( issue 3039;

  • 在为磁盘队列序列化对象时正确处理python 3中的picking错误( issue 3082 )

  • 复制请求时标志现在被保留( issue 3342;

  • FormRequest.from_response clickdata不应忽略带有 input[type=image] ( issue 3153 )

  • FormRequest.from响应应保留重复的密钥( issue 3247 )

文档改进¶

  • 重新编写文档是为了建议.get/.getall API而不是.extract/.extract_。也, 选择器 文档被更新并重新构造以匹配最新的Parsel文档;它们现在包含更多的主题,例如 选择元素属性CSS选择器的扩展 ( issue 3390 )

  • 使用浏览器的开发人员工具进行抓取 是一个新的教程,它取代了旧的火狐和Firebug教程( issue 3400 )

  • Scrapy_项目环境变量记录在案( issue 3518;

  • 安装说明中添加了故障排除部分( issue 3517;

  • 改进了教程中初学者资源的链接( issue 3367 , issue 3468;

  • 固定的 RETRY_HTTP_CODES 文档中的默认值( issue 3335;

  • 移除未使用的素材 DEPTH_STATS 文档选项( issue 3245;

  • 其他清理( issue 3347 , issue 3350 , issue 3445 , issue 3544 , issue 3605 )

折旧清除¶

1.0以前版本的 Scrapy 模块名称的兼容性垫片已移除( issue 3318 ):

  • scrapy.command

  • scrapy.contrib (所有子模块)

  • scrapy.contrib_exp (所有子模块)

  • scrapy.dupefilter

  • scrapy.linkextractor

  • scrapy.project

  • scrapy.spider

  • scrapy.spidermanager

  • scrapy.squeue

  • scrapy.stats

  • scrapy.statscol

  • scrapy.utils.decorator

有关详细信息见 模块重新定位 ,或使用Scrapy 1.5.x Deprecation Warnings中的建议更新代码。

其他折旧移除:

  • 已删除不推荐使用的scrapy.interfaces.ispIderManager;请使用scrapy.interfaces.ispIderLoader。

  • 已弃用 CrawlerSettings 类已删除( issue 3327 )

  • 已弃用 Settings.overridesSettings.defaults 属性被删除( issue 3327 , issue 3359 )

其他改进、清理¶

  • 所有 Scrapy 测试现在都在Windows上通过; Scrapy 测试套件在CI上的Windows环境中执行( issue 3315 )

  • Python 3.7支持( issue 3326 , issue 3150 , issue 3547 )

  • 测试和CI修复( issue 3526 , issue 3538 , issue 3308 , issue 3311 , issue 3309 , issue 3305 , issue 3210 , issue 3299 )

  • scrapy.http.cookies.CookieJar.clear 接受“域”、“路径”和“名称”可选参数( issue 3231 )

  • 附加文件包含在SDIST中( issue 3495;

  • 代码样式修复( issue 3405 , issue 3304;

  • 已删除不需要的.strip()调用( issue 3519;

  • collections.deque用于存储MiddleWarManager方法,而不是列表( issue 3476 )

选择器API更改¶

虽然这些不是scrapy本身的更改,而是scrapy用于xpath/css选择器的parsel_u库中的更改,但这些更改在这里值得一提。Scrapy现在依赖于parsel>=1.5,并且Scrapy文档会更新以跟踪最近的 parsel API惯例。

最明显的变化是 .get().getall() 选择器方法现在比 .extract_first().extract() . 我们认为这些新方法会产生更简洁和可读的代码。见 extract()和extract_first()。 了解更多详细信息。

注解

目前有 no plans 贬低 .extract().extract_first() 方法。

另一个有用的新特性是 Selector.attribSelectorList.attrib 属性,这使得获取HTML元素的属性更加容易。见 选择元素属性 .

CSS选择器缓存在parsel>=1.5中,这使得在多次使用相同的css路径时更快。这是非常常见的情况下,剪贴蜘蛛:回调通常被称为多次,在不同的网页。

如果使用自定义 SelectorSelectorList 子类 backward incompatible Parsel中的更改可能会影响代码。见 parsel changelog 详细描述,以及完整的改进列表。

Telnet控制台¶

向后不兼容: Scrapy的telnet控制台现在需要用户名和密码。见 远程登录控制台 了解更多详细信息。此更改修复了 安全问题; 详细说明见 Scrapy 1.5.2(2019-01-22)

新的可扩展性功能¶

  • from_crawler 对Feed 导出和Feed仓库增加了支持。除此之外,它还允许从自定义饲料仓库和出口商访问零碎设置。( issue 1605 , issue 3348 )

  • from_crawler 对双过滤器增加了支持( issue 2956 );这允许从双面打印器访问设置或蜘蛛。

  • item_error 在管道中发生错误时激发( issue 3256;

  • request_reached_downloader 当下载程序收到新请求时激发;此信号可能有用,例如,对于自定义计划程序有用( issue 3393 )

  • 新建SiteMapSpider sitemap_filter() 方法,该方法允许根据SiteMapSpider子类中的属性选择站点地图条目( issue 3512 )

  • 下载程序处理程序的延迟加载现在是可选的;这使得在自定义下载程序处理程序中能够更好地处理初始化错误。( issue 3394 )

新的文件管道和媒体管道功能¶

  • 显示s3filestore的更多选项: AWS_ENDPOINT_URLAWS_USE_SSLAWS_VERIFYAWS_REGION_NAME . 例如,这允许使用可选的或自托管的与AWS兼容的提供程序( issue 2609 , issue 3548 )

  • 对谷歌云存储的ACL支持: FILES_STORE_GCS_ACLIMAGES_STORE_GCS_ACL ( issue 3199 )

scrapy.contracts 改进¶

  • 更好地处理合同代码中的异常( issue 3377;

  • dont_filter=True 用于合同请求,该请求允许使用相同的URL测试不同的回调( issue 3381;

  • request_cls 合同子类中的属性允许在合同中使用不同的请求类,例如FormRequest( issue 3383 )

  • 合同中的固定errback处理,例如,对于为返回非200响应的URL执行合同的情况( issue 3371 )

可用性改进¶

  • robotstxtmiddleware的更多统计信息( issue 3100 )

  • 信息日志级别用于显示telnet主机/端口( issue 3115 )

  • 在robotstxtmiddleware中将消息添加到ignorerequest( issue 3113 )

  • 更好地验证 url 论点 Response.follow ( issue 3131 )

  • 当spider初始化出错时,从scray命令返回非零退出代码 (issue 3226 )

  • 链接提取改进:“ftp”添加到方案列表中( issue 3152 )将“flv”添加到常用视频扩展( issue 3165 )

  • 禁用导出程序时出现更好的错误消息( issue 3358;

  • scrapy shell --help 提到本地文件所需的语法( ./file.html - issue 3496 .

  • Referer header值添加到rfpdupefilter日志消息中( issue 3588 )

错误修复¶

  • 修复了Windows下.csv导出中多余空行的问题( issue 3039;

  • 在为磁盘队列序列化对象时正确处理python 3中的picking错误( issue 3082 )

  • 复制请求时标志现在被保留( issue 3342;

  • FormRequest.from_response clickdata不应忽略带有 input[type=image] ( issue 3153 )

  • FormRequest.from响应应保留重复的密钥( issue 3247 )

文档改进¶

  • 重新编写文档是为了建议.get/.getall API而不是.extract/.extract_。也, 选择器 文档被更新并重新构造以匹配最新的Parsel文档;它们现在包含更多的主题,例如 选择元素属性CSS选择器的扩展 ( issue 3390 )

  • 使用浏览器的开发人员工具进行抓取 是一个新的教程,它取代了旧的火狐和Firebug教程( issue 3400 )

  • Scrapy_项目环境变量记录在案( issue 3518;

  • 安装说明中添加了故障排除部分( issue 3517;

  • 改进了教程中初学者资源的链接( issue 3367 , issue 3468;

  • 固定的 RETRY_HTTP_CODES 文档中的默认值( issue 3335;

  • 移除未使用的素材 DEPTH_STATS 文档选项( issue 3245;

  • 其他清理( issue 3347 , issue 3350 , issue 3445 , issue 3544 , issue 3605 )

折旧清除¶

1.0以前版本的 Scrapy 模块名称的兼容性垫片已移除( issue 3318 ):

  • scrapy.command

  • scrapy.contrib (所有子模块)

  • scrapy.contrib_exp (所有子模块)

  • scrapy.dupefilter

  • scrapy.linkextractor

  • scrapy.project

  • scrapy.spider

  • scrapy.spidermanager

  • scrapy.squeue

  • scrapy.stats

  • scrapy.statscol

  • scrapy.utils.decorator

有关详细信息见 模块重新定位 ,或使用Scrapy 1.5.x Deprecation Warnings中的建议更新代码。

其他折旧移除:

  • 已删除不推荐使用的scrapy.interfaces.ispIderManager;请使用scrapy.interfaces.ispIderLoader。

  • 已弃用 CrawlerSettings 类已删除( issue 3327 )

  • 已弃用 Settings.overridesSettings.defaults 属性被删除( issue 3327 , issue 3359 )

其他改进、清理¶

  • 所有 Scrapy 测试现在都在Windows上通过; Scrapy 测试套件在CI上的Windows环境中执行( issue 3315 )

  • Python 3.7支持( issue 3326 , issue 3150 , issue 3547 )

  • 测试和CI修复( issue 3526 , issue 3538 , issue 3308 , issue 3311 , issue 3309 , issue 3305 , issue 3210 , issue 3299 )

  • scrapy.http.cookies.CookieJar.clear 接受“域”、“路径”和“名称”可选参数( issue 3231 )

  • 附加文件包含在SDIST中( issue 3495;

  • 代码样式修复( issue 3405 , issue 3304;

  • 已删除不需要的.strip()调用( issue 3519;

  • collections.deque用于存储MiddleWarManager方法,而不是列表( issue 3476 )

Scrapy 1.5.2(2019-01-22)¶

  • 安全修补程序: telnet控制台扩展可以很容易地被发布内容到http://localhost:6023的流氓网站利用,我们还没有找到从scrappy利用它的方法,但是很容易欺骗浏览器这样做,并提高了本地开发环境的风险。

    修复程序向后不兼容 ,默认情况下,它使用随机生成的密码启用telnet用户密码验证。如果不能立即升级,请考虑设置 TELNETCONSOLE_PORT 超出其默认值。

    有关详细信息的文档见 telnet console

  • 由于boto导入错误,GCE环境下的Backport CI构建失败。

Scrapy 1.5.1(2018-07-12)¶

这是一个包含重要错误修复的维护版本,但没有新功能:

  • O(N^2) 解决了影响python 3和pypy的gzip解压问题( issue 3281;

  • 改进了对TLS验证错误的跳过( issue 3166;

  • Ctrl-C处理在python 3.5中是固定的+( issue 3096 ;

  • 测试修复 issue 3092 , issue 3263 ;

  • 文档改进( issue 3058 , issue 3059 , issue 3089 , issue 3123 , issue 3127 , issue 3189 , issue 3224 , issue 3280 , issue 3279 , issue 3201 , issue 3260 , issue 3284 , issue 3298 , issue 3294 )

Scrapy 1.5.0(2017-12-29)¶

这个版本在代码库中带来了一些新的小特性和改进。一些亮点:

  • 文件管道和ImageSpipeline支持Google云存储。

  • 随着到代理的连接现在可以重用,使用代理服务器进行爬行变得更加高效。

  • 对警告、异常和日志消息进行了改进,使调试更加容易。

  • scrapy parse 命令现在允许通过 --meta 参数。

  • 与python 3.6、pypy和pypy3的兼容性得到了改进;通过在CI上运行测试,pypy和pypy3现在得到了官方支持。

  • 更好地默认处理HTTP 308、522和524状态代码。

  • 像往常一样,文档得到了改进。

向后不兼容的更改¶

  • Scrapy1.5放弃了对python 3.3的支持。

  • 默认的scrapy用户代理现在使用https链接到scrapy.org( issue 2983 ) 这在技术上是向后不兼容的; 覆盖 USER_AGENT 如果你依赖旧的价值观。

  • 记录被覆盖的设置 custom_settings 是固定的; this is technically backward-incompatible 因为记录器从 [scrapy.utils.log][scrapy.crawler] . 如果您正在分析垃圾日志,请更新日志分析器( issue 1343 )

  • Linkextractor现在忽略 m4v 默认情况下,这是行为的更改。

  • 522和524状态代码添加到 RETRY_HTTP_CODES ( issue 2851 )

新特点¶

  • 支持 <link> 标签在 Response.follow ( issue 2785 )

  • Support for ptpython REPL (issue 2654)

  • Google云存储支持文件管道和图像管道( issue 2923 )

  • 新的 --meta “scrapy parse”命令的选项允许传递附加请求。( issue 2883 )

  • 使用时填充spider变量 shell.inspect_response ( issue 2812 )

  • 处理HTTP 308永久重定向( issue 2844 )

  • 将522和524添加到 RETRY_HTTP_CODES ( issue 2851 )

  • 启动时记录版本信息( issue 2857 )

  • scrapy.mail.MailSender 现在在python 3中工作(它需要Twisted17.9.0)

  • 重新使用与代理服务器的连接( issue 2743 )

  • 为下载器中间件添加模板( issue 2755 )

  • 未定义分析回调时NotImplementedError的显式消息( issue 2831 )

  • CrawlerProcess有一个选项可以禁用安装根日志处理程序( issue 2921 )

  • Linkextractor现在忽略 m4v 默认情况下的扩展

  • 更好地记录响应消息 DOWNLOAD_WARNSIZEDOWNLOAD_MAXSIZE 限制(限制) issue 2927 )

  • 当URL被放入时显示警告 Spider.allowed_domains 而不是域( issue 2250 )

错误修复¶

  • 修复由重写的设置的日志记录 custom_settingsthis is technically backward-incompatible 因为记录器从 [scrapy.utils.log][scrapy.crawler] ,因此如果需要,请更新日志分析器( issue 1343 )

  • 默认的scrapy用户代理现在使用https链接到scrapy.org( issue 2983 ) 这在技术上是向后不兼容的; 覆盖 USER_AGENT 如果你依赖旧的价值观。

  • 修复pypy和pypy3测试失败,正式支持它们( issue 2793 , issue 2935 , issue 2990 , issue 3050 , issue 2213 , issue 3048 )

  • 在下列情况下修复DNS解析程序 DNSCACHE_ENABLED=False ( issue 2811 )

  • 添加 cryptography for Debian Jessie tox test env (issue 2848)

  • 添加验证以检查请求回调是否可调用( issue 2766 )

  • 端口 extras/qpsclient.py 到Python 3(Python) issue 2849 )

  • 在python 3的场景下使用getfullargspec来停止取消预测警告( issue 2862 )

  • 更新不推荐使用的测试别名( issue 2876 )

  • 固定 SitemapSpider 支持备用链接( issue 2853 )

文档¶

  • 为添加了缺少的项目符号点 AUTOTHROTTLE_TARGET_CONCURRENCY 设置。( issue 2756 )

  • 更新贡献文档,记录新的支持渠道( issue 2762 ,问题:“3038”

  • 在文档中包含对Scrapy Subreddit的引用

  • 修复断开的链接;对外部链接使用https://( issue 2978 , issue 2982 , issue 2958 )

  • 文档CloseSpider扩展更好( issue 2759 )

  • 在MongoDB示例中( issue 2781 )使用 pymongo.collection.Collection.insert_one()

  • 拼写错误和打字错误( issue 2828 , issue 2837 , issue 2884 , issue 2924 )

  • 澄清 CSVFeedSpider.headers 文件编制( issue 2826 )

  • 文件 DontCloseSpider 例外和澄清 spider_idle ( issue 2791 )

  • 更新自述文件中的“releases”部分( issue 2764 )

  • 修正RST语法 DOWNLOAD_FAIL_ON_DATALOSS 文档库 issue 2763 )

  • StartProject参数描述中的小修复( issue 2866 )

  • 在response.body文档中澄清数据类型( issue 2922 )

  • 添加有关的注释 request.meta['depth'] 到DepthmIddleware文档( issue 2374 )

  • 添加有关的注释 request.meta['dont_merge_cookies'] to CookiesMiddleware docs (issue 2999)

  • 最新的项目结构示例( issue 2964 , issue 2976 )

  • Itemexporters用法的更好示例( issue 2989 )

  • 文件 from_crawler 蜘蛛和下载者中间商的方法( issue 3019 )

向后不兼容的更改¶

  • Scrapy1.5放弃了对python 3.3的支持。

  • 默认的scrapy用户代理现在使用https链接到scrapy.org( issue 2983 ) 这在技术上是向后不兼容的; 覆盖 USER_AGENT 如果你依赖旧的价值观。

  • 记录被覆盖的设置 custom_settings 是固定的; this is technically backward-incompatible 因为记录器从 [scrapy.utils.log][scrapy.crawler] . 如果您正在分析垃圾日志,请更新日志分析器( issue 1343 )

  • Linkextractor现在忽略 m4v 默认情况下,这是行为的更改。

  • 522和524状态代码添加到 RETRY_HTTP_CODES ( issue 2851 )

新特点¶

  • 支持 <link> 标签在 Response.follow ( issue 2785 )

  • Support for ptpython REPL (issue 2654)

  • Google云存储支持文件管道和图像管道( issue 2923 )

  • 新的 --meta “scrapy parse”命令的选项允许传递附加请求。( issue 2883 )

  • 使用时填充spider变量 shell.inspect_response ( issue 2812 )

  • 处理HTTP 308永久重定向( issue 2844 )

  • 将522和524添加到 RETRY_HTTP_CODES ( issue 2851 )

  • 启动时记录版本信息( issue 2857 )

  • scrapy.mail.MailSender 现在在python 3中工作(它需要Twisted17.9.0)

  • 重新使用与代理服务器的连接( issue 2743 )

  • 为下载器中间件添加模板( issue 2755 )

  • 未定义分析回调时NotImplementedError的显式消息( issue 2831 )

  • CrawlerProcess有一个选项可以禁用安装根日志处理程序( issue 2921 )

  • Linkextractor现在忽略 m4v 默认情况下的扩展

  • 更好地记录响应消息 DOWNLOAD_WARNSIZEDOWNLOAD_MAXSIZE 限制(限制) issue 2927 )

  • 当URL被放入时显示警告 Spider.allowed_domains 而不是域( issue 2250 )

错误修复¶

  • 修复由重写的设置的日志记录 custom_settingsthis is technically backward-incompatible 因为记录器从 [scrapy.utils.log][scrapy.crawler] ,因此如果需要,请更新日志分析器( issue 1343 )

  • 默认的scrapy用户代理现在使用https链接到scrapy.org( issue 2983 ) 这在技术上是向后不兼容的; 覆盖 USER_AGENT 如果你依赖旧的价值观。

  • 修复pypy和pypy3测试失败,正式支持它们( issue 2793 , issue 2935 , issue 2990 , issue 3050 , issue 2213 , issue 3048 )

  • 在下列情况下修复DNS解析程序 DNSCACHE_ENABLED=False ( issue 2811 )

  • 添加 cryptography for Debian Jessie tox test env (issue 2848)

  • 添加验证以检查请求回调是否可调用( issue 2766 )

  • 端口 extras/qpsclient.py 到Python 3(Python) issue 2849 )

  • 在python 3的场景下使用getfullargspec来停止取消预测警告( issue 2862 )

  • 更新不推荐使用的测试别名( issue 2876 )

  • 固定 SitemapSpider 支持备用链接( issue 2853 )

文档¶

  • 为添加了缺少的项目符号点 AUTOTHROTTLE_TARGET_CONCURRENCY 设置。( issue 2756 )

  • 更新贡献文档,记录新的支持渠道( issue 2762 ,问题:“3038”

  • 在文档中包含对Scrapy Subreddit的引用

  • 修复断开的链接;对外部链接使用https://( issue 2978 , issue 2982 , issue 2958 )

  • 文档CloseSpider扩展更好( issue 2759 )

  • 在MongoDB示例中( issue 2781 )使用 pymongo.collection.Collection.insert_one()

  • 拼写错误和打字错误( issue 2828 , issue 2837 , issue 2884 , issue 2924 )

  • 澄清 CSVFeedSpider.headers 文件编制( issue 2826 )

  • 文件 DontCloseSpider 例外和澄清 spider_idle ( issue 2791 )

  • 更新自述文件中的“releases”部分( issue 2764 )

  • 修正RST语法 DOWNLOAD_FAIL_ON_DATALOSS 文档库 issue 2763 )

  • StartProject参数描述中的小修复( issue 2866 )

  • 在response.body文档中澄清数据类型( issue 2922 )

  • 添加有关的注释 request.meta['depth'] 到DepthmIddleware文档( issue 2374 )

  • 添加有关的注释 request.meta['dont_merge_cookies'] to CookiesMiddleware docs (issue 2999)

  • 最新的项目结构示例( issue 2964 , issue 2976 )

  • Itemexporters用法的更好示例( issue 2989 )

  • 文件 from_crawler 蜘蛛和下载者中间商的方法( issue 3019 )

Scrapy 1.4.0(2017-05-18)¶

Scrapy1.4并没有带来那么多惊人的新功能,但还是有相当多的便利改进。

Scrappy现在支持匿名ftp会话,通过新的 FTP_USERFTP_PASSWORD 设置。如果您使用的是Twisted版本17.1.0或更高版本,那么ftp现在可用于python 3。

有一个新的 response.follow 创建请求的方法; 现在,它是一种推荐的在“ Scrapy 蜘蛛”中创建请求的方法。. 这种方法使得编写正确的spider更加容易; response.follow 与创建 scrapy.Request 直接对象:

  • 它处理相关的URL;

  • 它可以在非utf8页面上正确地使用非ASCII URL;

  • 除了绝对和相对URL之外,它还支持选择器;用于 <a> 元素也可以提取它们的Href值。

例如,而不是:

for href in response.css('li.page a::attr(href)').extract():
url = response.urljoin(href)
yield scrapy.Request(url, self.parse, encoding=response.encoding)

现在可以写下:

for a in response.css('li.page a'):
yield response.follow(a, self.parse)

链接提取器也得到了改进。 它们与常规现代浏览器的工作方式类似:在构建“Link”对象时,从属性中删除前导和尾随空格(想象``href =“http://example.com”``)。 使用``FormRequest``的``action``属性也会发生这种空白剥离。

**请注意,链接提取器在默认情况下不再规范化URL。**这让用户不时感到困惑,实际上浏览器并不是这样做的,因此我们删除了对提取链接的额外转换。

对于那些想要更多控制 Referer: 当跟踪链接时Scrapy发送的标题,您可以设置自己的 Referrer Policy . 在Scrapy 1.4之前,默认 RefererMiddleware 会简单而盲目地将其设置为生成HTTP请求的响应的URL(这可能会泄漏URL种子的信息)。默认情况下,scrappy现在的行为与常规浏览器非常相似。这个策略完全可以用W3C标准值定制(或者如果你愿意的话,可以用你自己定制的值)。见 REFERRER_POLICY 有关详细信息。

为了使scrappyspider更容易调试,scrappy在1.4中默认记录更多的统计信息:内存使用统计信息、详细的重试统计信息、详细的HTTP错误代码统计信息。类似的变化是,HTTP缓存路径现在也可以在日志中看到。

最后但同样重要的是,scrapy现在可以选择使用新的 FEED_EXPORT_INDENT 设置。

享受!(或继续阅读此版本中的其他更改。)

折旧和向后不兼容的变更¶

  • Default to canonicalize=False in
    scrapy.linkextractors.LinkExtractor
    (issue 2537, fixes issue 1941 and issue 1982):
    warning, this is technically backward-incompatible

  • 默认情况下启用memusage扩展( issue 2539 修正 issue 2187 ; this is technically backward-incompatible 因此,请检查您是否有任何非违约行为 MEMUSAGE_*** 选项集。

  • EDITOR 环境变量现在优先于 EDITOR 在settings.py中定义的选项( issue 1829 );报废默认设置不再依赖于环境变量。 从技术上讲,这是一个前后不相容的变化.

  • 不推荐使用``Spider.make_requests_from_url``(:issue:1728,fixes:issue:1495)。

新特点¶

  • 接受代理凭据 proxy 请求元键( issue 2526 )

  • 支持 brotli-compressed content; requires optional brotlipy (issue 2535)

  • 新的 response.follow 创建请求的快捷方式( issue 1940 )

  • 补充 flags 参数和属性 Request 对象( issue 2047 )

  • 支持匿名ftp( issue 2342 )

  • 补充 retry/countretry/max_reachedretry/reason_count/<reason> 统计到 RetryMiddleware ( issue 2543 )

  • 补充 httperror/response_ignored_counthttperror/response_ignored_status_count/<status> 统计到 HttpErrorMiddleware ( issue 2566 )

  • 可定制的 Referrer policy in RefererMiddleware ( issue 2306 )

  • 新的 data: URI下载处理程序器( issue 2334 修正 issue 2156 )

  • 使用HTTP缓存时的日志缓存目录( issue 2611 修正 issue 2604 )

  • 当项目包含重复的蜘蛛名称时警告用户(修复 issue 2181 )

  • scrapy.utils.datatypes.CaselessDict 现在接受 Mapping 实例而不仅仅是dicts (issue 2646 )

  • Media downloadsFilesPipelineImagesPipeline ,现在可以选择使用新的 MEDIA_ALLOW_REDIRECTS 设置 (issue 2616 修正 issue 2004 )

  • 接受来自使用新的 DOWNLOAD_FAIL_ON_DATALOSS 设置( issue 2590 修正 issue 2586 )

  • JSON和XML项的可选漂亮打印通过 FEED_EXPORT_INDENT 设置( issue 2456 修正 issue 1327 )

  • 允许删除字段 FormRequest.from_response 格式数据 None 值已传递( issue 667 )

  • 每个请求使用新的 max_retry_times 元密钥(元密钥) issue 2642 )

  • python -m scrapy 作为更明确的替代方案 scrapy 命令( issue 2740 )

错误修复¶

  • Linkextractor现在从属性中去掉前导空格和尾随空格。( issue 2547 修正 issue 1614 )

  • Properly handle whitespaces in action attribute in
    FormRequest (issue 2548)

  • 从代理服务器缓冲连接响应字节,直到收到所有HTTP头( issue 2495 修正 issue 2491 )

  • FTP下载器现在可以在python 3上工作,前提是使用twisted>=17.1( issue 2599 )

  • 在解压缩内容后使用body选择响应类型( issue 2393 修正 issue 2145 )

  • 总是解压缩 Content-Encoding: gzipHttpCompressionMiddleware 阶段(阶段) issue 2391 )

  • 尊重自定义日志级别 Spider.custom_settings ( issue 2581 修正 issue 1612 )

  • MacOS的“make htmlview”修复程序( issue 2661 )

  • 从命令列表中删除“命令”( issue 2695 )

  • 修复具有空正文的投递请求的重复内容长度头( issue 2677 )

  • 适当地取消大量下载,如上面所述 DOWNLOAD_MAXSIZE ( issue 1616 )

  • ImageSpipeline:使用调色板固定处理透明PNG图像( issue 2675 )

清理和重构¶

  • 测试:删除临时文件和文件夹 (issue 2570 ),修复了macOS上的ProjectUtilsTest (issue 2569 ),在Travis CI上使用portable pypy for Linux (issue 2710 )

  • 独立建筑请求 _requests_to_follow 爬行蜘蛛( issue 2562 )

  • 删除“python 3 progress”徽章( issue 2567 )

  • 再添加几行到 .gitignore ( issue 2557 )

  • 删除BumpVersion预发布配置( issue 2159 )

  • 添加codecov.yml文件( issue 2750 )

  • 基于Twisted版本设置上下文工厂实现(:issue:2577,fixes:issue:2560

  • 添加省略 self 默认项目中间件模板中的参数( issue 2595 )

  • 删除冗余 slot.add_request() 调用ExecutionEngine( issue 2617 )

  • Catch more specific os.error exception in
    scrapy.pipelines.files.FSFilesStore (issue 2644)

  • 更改“localhost”测试服务器证书( issue 2720 )

  • 移除未使用的 MEMUSAGE_REPORT 设置( issue 2576 )

文档¶

  • 导出程序需要二进制模式( issue 2564 修正 issue 2553 )

  • 提及问题 FormRequest.from_response 由于lxml中的错误( issue 2572 )

  • 在模板中统一使用单引号( issue 2596 )

  • 文件 ftp_userftp_password 元密钥(元密钥) issue 2587 )

  • 关于弃用的``contrib /``(:issue:2636)的删除部分

  • 在Windows上安装Scrapy时推荐Anaconda(问题:2477,修复:问题:2475

  • 常见问题解答:在Windows上重写关于python 3支持的说明( issue 2690 )

  • 重新排列选择器节( issue 2705 )

  • 去除 __nonzero__SelectorList 文档 (issue 2683 )

  • 在文档中说明如何禁用请求筛选 DUPEFILTER_CLASS 设置( issue 2714 )

  • 在文档设置自述文件中添加sphinx_rtd_主题( issue 2668 )

  • 在json item writer示例中以文本模式打开文件( issue 2729 )

  • 澄清 allowed_domains 实例(例) issue 2670 )

折旧和向后不兼容的变更¶

  • Default to canonicalize=False in
    scrapy.linkextractors.LinkExtractor
    (issue 2537, fixes issue 1941 and issue 1982):
    warning, this is technically backward-incompatible

  • 默认情况下启用memusage扩展( issue 2539 修正 issue 2187 ; this is technically backward-incompatible 因此,请检查您是否有任何非违约行为 MEMUSAGE_*** 选项集。

  • EDITOR 环境变量现在优先于 EDITOR 在settings.py中定义的选项( issue 1829 );报废默认设置不再依赖于环境变量。 从技术上讲,这是一个前后不相容的变化.

  • 不推荐使用``Spider.make_requests_from_url``(:issue:1728,fixes:issue:1495)。

新特点¶

  • 接受代理凭据 proxy 请求元键( issue 2526 )

  • 支持 brotli-compressed content; requires optional brotlipy (issue 2535)

  • 新的 response.follow 创建请求的快捷方式( issue 1940 )

  • 补充 flags 参数和属性 Request 对象( issue 2047 )

  • 支持匿名ftp( issue 2342 )

  • 补充 retry/countretry/max_reachedretry/reason_count/<reason> 统计到 RetryMiddleware ( issue 2543 )

  • 补充 httperror/response_ignored_counthttperror/response_ignored_status_count/<status> 统计到 HttpErrorMiddleware ( issue 2566 )

  • 可定制的 Referrer policy in RefererMiddleware ( issue 2306 )

  • 新的 data: URI下载处理程序器( issue 2334 修正 issue 2156 )

  • 使用HTTP缓存时的日志缓存目录( issue 2611 修正 issue 2604 )

  • 当项目包含重复的蜘蛛名称时警告用户(修复 issue 2181 )

  • scrapy.utils.datatypes.CaselessDict 现在接受 Mapping 实例而不仅仅是dicts (issue 2646 )

  • Media downloadsFilesPipelineImagesPipeline ,现在可以选择使用新的 MEDIA_ALLOW_REDIRECTS 设置 (issue 2616 修正 issue 2004 )

  • 接受来自使用新的 DOWNLOAD_FAIL_ON_DATALOSS 设置( issue 2590 修正 issue 2586 )

  • JSON和XML项的可选漂亮打印通过 FEED_EXPORT_INDENT 设置( issue 2456 修正 issue 1327 )

  • 允许删除字段 FormRequest.from_response 格式数据 None 值已传递( issue 667 )

  • 每个请求使用新的 max_retry_times 元密钥(元密钥) issue 2642 )

  • python -m scrapy 作为更明确的替代方案 scrapy 命令( issue 2740 )

错误修复¶

  • Linkextractor现在从属性中去掉前导空格和尾随空格。( issue 2547 修正 issue 1614 )

  • Properly handle whitespaces in action attribute in
    FormRequest (issue 2548)

  • 从代理服务器缓冲连接响应字节,直到收到所有HTTP头( issue 2495 修正 issue 2491 )

  • FTP下载器现在可以在python 3上工作,前提是使用twisted>=17.1( issue 2599 )

  • 在解压缩内容后使用body选择响应类型( issue 2393 修正 issue 2145 )

  • 总是解压缩 Content-Encoding: gzipHttpCompressionMiddleware 阶段(阶段) issue 2391 )

  • 尊重自定义日志级别 Spider.custom_settings ( issue 2581 修正 issue 1612 )

  • MacOS的“make htmlview”修复程序( issue 2661 )

  • 从命令列表中删除“命令”( issue 2695 )

  • 修复具有空正文的投递请求的重复内容长度头( issue 2677 )

  • 适当地取消大量下载,如上面所述 DOWNLOAD_MAXSIZE ( issue 1616 )

  • ImageSpipeline:使用调色板固定处理透明PNG图像( issue 2675 )

清理和重构¶

  • 测试:删除临时文件和文件夹 (issue 2570 ),修复了macOS上的ProjectUtilsTest (issue 2569 ),在Travis CI上使用portable pypy for Linux (issue 2710 )

  • 独立建筑请求 _requests_to_follow 爬行蜘蛛( issue 2562 )

  • 删除“python 3 progress”徽章( issue 2567 )

  • 再添加几行到 .gitignore ( issue 2557 )

  • 删除BumpVersion预发布配置( issue 2159 )

  • 添加codecov.yml文件( issue 2750 )

  • 基于Twisted版本设置上下文工厂实现(:issue:2577,fixes:issue:2560

  • 添加省略 self 默认项目中间件模板中的参数( issue 2595 )

  • 删除冗余 slot.add_request() 调用ExecutionEngine( issue 2617 )

  • Catch more specific os.error exception in
    scrapy.pipelines.files.FSFilesStore (issue 2644)

  • 更改“localhost”测试服务器证书( issue 2720 )

  • 移除未使用的 MEMUSAGE_REPORT 设置( issue 2576 )

文档¶

  • 导出程序需要二进制模式( issue 2564 修正 issue 2553 )

  • 提及问题 FormRequest.from_response 由于lxml中的错误( issue 2572 )

  • 在模板中统一使用单引号( issue 2596 )

  • 文件 ftp_userftp_password 元密钥(元密钥) issue 2587 )

  • 关于弃用的``contrib /``(:issue:2636)的删除部分

  • 在Windows上安装Scrapy时推荐Anaconda(问题:2477,修复:问题:2475

  • 常见问题解答:在Windows上重写关于python 3支持的说明( issue 2690 )

  • 重新排列选择器节( issue 2705 )

  • 去除 __nonzero__SelectorList 文档 (issue 2683 )

  • 在文档中说明如何禁用请求筛选 DUPEFILTER_CLASS 设置( issue 2714 )

  • 在文档设置自述文件中添加sphinx_rtd_主题( issue 2668 )

  • 在json item writer示例中以文本模式打开文件( issue 2729 )

  • 澄清 allowed_domains 实例(例) issue 2670 )

Scrapy 1.3.3(2017-03-10)¶

错误修复¶

  • 制作 SpiderLoader 提升 ImportError 对于缺少依赖项和错误 SPIDER_MODULES . 从1.3.0开始,这些例外被作为警告而沉默。引入新的设置,以便在警告或异常(如果需要)之间切换;有关详细信息请参见 SPIDER_LOADER_WARN_ONLY

错误修复¶

  • 制作 SpiderLoader 提升 ImportError 对于缺少依赖项和错误 SPIDER_MODULES . 从1.3.0开始,这些例外被作为警告而沉默。引入新的设置,以便在警告或异常(如果需要)之间切换;有关详细信息请参见 SPIDER_LOADER_WARN_ONLY

Scrapy 1.3.2(2017-02-13)¶

错误修复¶

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

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

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

错误修复¶

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

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

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

Scrapy 1.3.1(2017-02-08)¶

新特点¶

  • 支持布尔设置的``'True''False'``字符串值(:issue:2519); 你现在可以做一些像``scrapy crawl myspider -s REDIRECT_ENABLED = False``这样的事情。

  • 支持Kwargs response.xpath() 使用 XPath variables 和特殊名称空间声明;这至少需要Parselv1.1( issue 2457 )

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

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

错误修复¶

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

  • 固定 view 命令;这是v1.3.0中的回归( issue 2503 )

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

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

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

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

  • 按顺序强制执行组件的数值 SPIDER_MIDDLEWARESDOWNLOADER_MIDDLEWARESEXTENIONSSPIDER_CONTRACTS ( issue 2420 )

文档¶

  • 改写行为准则部分并升级到贡献者契约v1.4 (issue 2469 )

  • 澄清传递spider参数会将其转换为spider属性( issue 2483 )

  • 在``FormRequest.from_response()``(:issue:2497)上记录``formid``参数。

  • 向自述文件添加.rst扩展名( issue 2507 )

  • 提到级别数据库缓存存储后端( issue 2525 )

  • 使用 yield 在示例回调代码中( issue 2533 )

  • 添加有关HTML实体解码的说明 .re()/.re_first() ( issue 1704 )

  • 错别字(:问题:2512,:issue:2534,:issue:2531)。

清除¶

  • Remove redundant check in MetaRefreshMiddleware (issue 2542).

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

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

新特点¶

  • 支持布尔设置的``'True''False'``字符串值(:issue:2519); 你现在可以做一些像``scrapy crawl myspider -s REDIRECT_ENABLED = False``这样的事情。

  • 支持Kwargs response.xpath() 使用 XPath variables 和特殊名称空间声明;这至少需要Parselv1.1( issue 2457 )

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

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

错误修复¶

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

  • 固定 view 命令;这是v1.3.0中的回归( issue 2503 )

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

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

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

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

  • 按顺序强制执行组件的数值 SPIDER_MIDDLEWARESDOWNLOADER_MIDDLEWARESEXTENIONSSPIDER_CONTRACTS ( issue 2420 )

文档¶

  • 改写行为准则部分并升级到贡献者契约v1.4 (issue 2469 )

  • 澄清传递spider参数会将其转换为spider属性( issue 2483 )

  • 在``FormRequest.from_response()``(:issue:2497)上记录``formid``参数。

  • 向自述文件添加.rst扩展名( issue 2507 )

  • 提到级别数据库缓存存储后端( issue 2525 )

  • 使用 yield 在示例回调代码中( issue 2533 )

  • 添加有关HTML实体解码的说明 .re()/.re_first() ( issue 1704 )

  • 错别字(:问题:2512,:issue:2534,:issue:2531)。

清除¶

  • Remove redundant check in MetaRefreshMiddleware (issue 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.web.clienttwisted.internet.endpoints 直接。(另请参见下面的清理。)

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

新特点¶

  • ``MailSender``现在接受单个字符串作为``to``和``cc``参数的值(:issue:2272

  • scrapy fetch urlscrapy shell urlfetch(url) 在Scrapy shell中,默认情况下遵循HTTP重定向 (issue 2290 见 fetchshell 有关详细信息。

  • HttpErrorMiddleware 现在记录错误 INFO 级别而不是 DEBUG ;从技术上讲 backward incompatible 所以请检查您的日志分析器。

  • 默认情况下,记录器名称现在使用长格式路径,例如 [scrapy.extensions.logstats] 而不是先前版本(例如 [scrapy] 这是 backward incompatible 如果日志解析器需要短的logger name部分。您可以使用 LOG_SHORT_NAMES 设置为 True .

依赖关系和清理¶

  • Scrappy现在需要twisted>=13.1,这已经是许多Linux发行版的情况了。

  • 结果,我们摆脱了 scrapy.xlib.tx.* 模块,它复制了一些扭曲的代码,供用户使用“旧”的扭曲版本

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

新特点¶

  • ``MailSender``现在接受单个字符串作为``to``和``cc``参数的值(:issue:2272

  • scrapy fetch urlscrapy shell urlfetch(url) 在Scrapy shell中,默认情况下遵循HTTP重定向 (issue 2290 见 fetchshell 有关详细信息。

  • HttpErrorMiddleware 现在记录错误 INFO 级别而不是 DEBUG ;从技术上讲 backward incompatible 所以请检查您的日志分析器。

  • 默认情况下,记录器名称现在使用长格式路径,例如 [scrapy.extensions.logstats] 而不是先前版本(例如 [scrapy] 这是 backward incompatible 如果日志解析器需要短的logger name部分。您可以使用 LOG_SHORT_NAMES 设置为 True .

依赖关系和清理¶

  • Scrappy现在需要twisted>=13.1,这已经是许多Linux发行版的情况了。

  • 结果,我们摆脱了 scrapy.xlib.tx.* 模块,它复制了一些扭曲的代码,供用户使用“旧”的扭曲版本

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

Scrapy 1.2.3(2017-03-03)¶

  • 打包修复:禁止在setup.py中支持不受支持的Twisted版本

Scrapy 1.2.2(2016-12-06)¶

错误修复¶

  • 修复管道上发生故障时的神秘回溯 open_spider() ( issue 2011 )

  • 修复嵌入的ipython外壳变量(修复 issue 396 重新出现在1.2.0中,固定在 issue 2418 )

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

    • 处理(非标准)相对站点地图URL( issue 2390 )

    • 在python 2中处理非ASCII URL和用户代理( issue 2373 )

文档¶

  • 文件 "download_latency" 键入 Requestmeta DICT issue 2033 )

  • 从目录中删除Ubuntu包上的页面(已弃用且不受支持)( issue 2335 )

  • 一些固定的拼写错误(:issue:2346,:issue:2369,:issue:2369,:issue:2380)和澄清(:issue:2354,:issue:2325,:问题:2414

其他变化¶

  • 广告`conda-forge`_作为Scrapy的官方conda频道(:issue:2387

  • 尝试使用时出现更多有用的错误消息 .css().xpath() 关于非文本响应( issue 2264 )

  • startproject 命令现在生成一个示例 middlewares.py 文件(文件) issue 2335 )

  • 在``scrapy version`` verbose output(:issue:2404)中添加更多依赖项的版本信息

  • 全部删除 *.pyc 源分发中的文件( issue 2386 )

错误修复¶

  • 修复管道上发生故障时的神秘回溯 open_spider() ( issue 2011 )

  • 修复嵌入的ipython外壳变量(修复 issue 396 重新出现在1.2.0中,固定在 issue 2418 )

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

    • 处理(非标准)相对站点地图URL( issue 2390 )

    • 在python 2中处理非ASCII URL和用户代理( issue 2373 )

文档¶

  • 文件 "download_latency" 键入 Requestmeta DICT issue 2033 )

  • 从目录中删除Ubuntu包上的页面(已弃用且不受支持)( issue 2335 )

  • 一些固定的拼写错误(:issue:2346,:issue:2369,:issue:2369,:issue:2380)和澄清(:issue:2354,:issue:2325,:问题:2414

其他变化¶

  • 广告`conda-forge`_作为Scrapy的官方conda频道(:issue:2387

  • 尝试使用时出现更多有用的错误消息 .css().xpath() 关于非文本响应( issue 2264 )

  • startproject 命令现在生成一个示例 middlewares.py 文件(文件) issue 2335 )

  • 在``scrapy version`` verbose output(:issue:2404)中添加更多依赖项的版本信息

  • 全部删除 *.pyc 源分发中的文件( issue 2386 )

Scrapy 1.2.1(2016-10-21)¶

错误修复¶

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

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

文档¶

  • 修复jsonWriterPipeline示例( issue 2302 )

  • 各种注释: issue 2330 关于蜘蛛的名字, issue 2329 在中间件方法处理顺序上, issue 2327 以列表形式获取多值HTTP头。

其他变化¶

  • 从内置蜘蛛模板中的``start_urls``中删除了``www``(:issue:2299)。

错误修复¶

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

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

文档¶

  • 修复jsonWriterPipeline示例( issue 2302 )

  • 各种注释: issue 2330 关于蜘蛛的名字, issue 2329 在中间件方法处理顺序上, issue 2327 以列表形式获取多值HTTP头。

其他变化¶

  • 从内置蜘蛛模板中的``start_urls``中删除了``www``(:issue:2299)。

Scrapy 1.2.0(2016-10-03)¶

新特点¶

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

  • startproject 命令现在支持一个可选的目标目录,以根据项目名称覆盖默认目录。( issue 2005 )

  • 新的 SCHEDULER_DEBUG 设置为日志请求序列化失败( issue 1610 )

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

  • 将``application / json-amazonui-streaming``解释为``TextResponse``(:issue:1503)。

  • scrapy 在使用shell工具时默认导入( shellinspect_response ( issue 2248 )

错误修复¶

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

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

  • ``Selector``不允许再传递``response``和``text``(:issue:2153)。

  • 修复了错误回调名称的日志记录 scrapy parse ( issue 2169 )

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

  • 使用``CrawlSpider``时修复选定的回调:command:scrapy parse <parse>`(:issue:`2225)。

  • 修复蜘蛛不生成任何项时的无效JSON和XML文件( issue 872 )

  • 实施 flush() FPR StreamLogger 避免日志中出现警告( issue 2125 )

重构¶

  • canonicalize_url 已移至 w3lib.url (issue 2168) .

测试和要求¶

Scrapy的新需求基线是Debian8“Jessie”。它以前是Ubuntu12.04精确版。实际上,这意味着我们至少要用这些(主要)包版本运行连续集成测试:twisted 14.0、pyopenssl 0.14、lxml 3.4。

Scrapy可以很好地处理这些包的旧版本(例如,代码库中仍然有用于旧的扭曲版本的开关),但不能保证(因为它不再被测试)。

文档¶

  • 语法修正: issue 2128 , issue 1566 .

  • 从自述文件中删除“下载状态”徽章( issue 2160 )

  • New Scrapy architecture diagram (issue 2165).

  • 更新的 Response 参数文档( issue 2197 )

  • 重新误导:设置:RANDOMIZE_DOWNLOAD_DELAY description(:issue:2190)。

  • 添加stackoverflow作为支持通道( issue 2257 )

新特点¶

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

  • startproject 命令现在支持一个可选的目标目录,以根据项目名称覆盖默认目录。( issue 2005 )

  • 新的 SCHEDULER_DEBUG 设置为日志请求序列化失败( issue 1610 )

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

  • 将``application / json-amazonui-streaming``解释为``TextResponse``(:issue:1503)。

  • scrapy 在使用shell工具时默认导入( shellinspect_response ( issue 2248 )

错误修复¶

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

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

  • ``Selector``不允许再传递``response``和``text``(:issue:2153)。

  • 修复了错误回调名称的日志记录 scrapy parse ( issue 2169 )

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

  • 使用``CrawlSpider``时修复选定的回调:command:scrapy parse <parse>`(:issue:`2225)。

  • 修复蜘蛛不生成任何项时的无效JSON和XML文件( issue 872 )

  • 实施 flush() FPR StreamLogger 避免日志中出现警告( issue 2125 )

重构¶

  • canonicalize_url 已移至 w3lib.url (issue 2168) .

测试和要求¶

Scrapy的新需求基线是Debian8“Jessie”。它以前是Ubuntu12.04精确版。实际上,这意味着我们至少要用这些(主要)包版本运行连续集成测试:twisted 14.0、pyopenssl 0.14、lxml 3.4。

Scrapy可以很好地处理这些包的旧版本(例如,代码库中仍然有用于旧的扭曲版本的开关),但不能保证(因为它不再被测试)。

文档¶

  • 语法修正: issue 2128 , issue 1566 .

  • 从自述文件中删除“下载状态”徽章( issue 2160 )

  • New Scrapy architecture diagram (issue 2165).

  • 更新的 Response 参数文档( issue 2197 )

  • 重新误导:设置:RANDOMIZE_DOWNLOAD_DELAY description(:issue:2190)。

  • 添加stackoverflow作为支持通道( issue 2257 )

Scrapy 1.1.4(2017-03-03)¶

  • 打包修复:禁止在setup.py中支持不受支持的Twisted版本

Scrapy 1.1.3(2016-09-22)¶

错误修复¶

  • “ImagesPipeline”和“FilesPipeline”的子类的类属性与它们在1.1.1之前的作用相同(:issue:2243,fixes:issue:2198

文档¶

  • Overviewtutorial 重写以使用http://toscrape.com网站( issue 2236 , issue 2249 , issue 2252 )

错误修复¶

  • “ImagesPipeline”和“FilesPipeline”的子类的类属性与它们在1.1.1之前的作用相同(:issue:2243,fixes:issue:2198

文档¶

  • Overviewtutorial 重写以使用http://toscrape.com网站( issue 2236 , issue 2249 , issue 2252 )

Scrapy 1.1.2(2016-08-18)¶

错误修复¶

  • 引入一个缺失:设置:`IMAGES_STORE_S3_ACL`设置,在将图像上传到S3时覆盖``ImagesPipeline``中的默认ACL策略(请注意,默认的ACL策略是“private”--而不是“public read”--因为scrapy 1.1.0)

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

错误修复¶

  • 引入一个缺失:设置:`IMAGES_STORE_S3_ACL`设置,在将图像上传到S3时覆盖``ImagesPipeline``中的默认ACL策略(请注意,默认的ACL策略是“private”--而不是“public read”--因为scrapy 1.1.0)

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

Scrapy 1.1.1(2016-07-13)¶

错误修复¶

  • 在连接请求到HTTPS代理中添加“主机”头( issue 2069 )

  • 使用响应 body 选择响应类时( issue 2001 修正 issue 2000 )

  • 不要使用错误的netlocs规范化URL(:issue:2038,fixes:issue:2010

  • 修复了``HttpCompressionMiddleware``(和``SitemapSpider``):

    • 不解码HEAD响应(:issue:2008,fixes:issue:1899

    • 在gzip内容类型标题中处理charset参数(:issue:2050,fixes:issue:2049

    • 不要解压缩gzip八位字节流响应(:issue:2065,fixes:issue:2063

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

  • 关于使用遗留类属性进行定制,使``FilesPipeline``和``ImagesPipeline``再次向后兼容(:issue:1989,fixes:issue:1985

新特点¶

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

  • 重试HTTPS连接 TunnelError 默认情况下( issue 1974 )

文档¶

  • FEED_TEMPDIR 设置在词典编纂位置( commit 9b3c72c )

  • 在概述中使用惯用的``.extract_first()``(:issue:1994

  • 在版权公告中的更新年份( commit c2c8036 )

  • 添加有关错误回复的信息和示例( issue 1995 )

  • 在下载器中间件示例中使用“url”变量( issue 2015 )

  • 语法修复(:问题:'2054`,:issue:2120

  • 关于在蜘蛛回调中使用BeautifulSoup的新FAQ条目(:issue:2048

  • 添加关于Scrapy不能在使用Python3的Windows上工作的注释 (issue 2060 )

  • 鼓励拉动请求中的完整标题(:issue:2026

测验¶

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

错误修复¶

  • 在连接请求到HTTPS代理中添加“主机”头( issue 2069 )

  • 使用响应 body 选择响应类时( issue 2001 修正 issue 2000 )

  • 不要使用错误的netlocs规范化URL(:issue:2038,fixes:issue:2010

  • 修复了``HttpCompressionMiddleware``(和``SitemapSpider``):

    • 不解码HEAD响应(:issue:2008,fixes:issue:1899

    • 在gzip内容类型标题中处理charset参数(:issue:2050,fixes:issue:2049

    • 不要解压缩gzip八位字节流响应(:issue:2065,fixes:issue:2063

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

  • 关于使用遗留类属性进行定制,使``FilesPipeline``和``ImagesPipeline``再次向后兼容(:issue:1989,fixes:issue:1985

新特点¶

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

  • 重试HTTPS连接 TunnelError 默认情况下( issue 1974 )

文档¶

  • FEED_TEMPDIR 设置在词典编纂位置( commit 9b3c72c )

  • 在概述中使用惯用的``.extract_first()``(:issue:1994

  • 在版权公告中的更新年份( commit c2c8036 )

  • 添加有关错误回复的信息和示例( issue 1995 )

  • 在下载器中间件示例中使用“url”变量( issue 2015 )

  • 语法修复(:问题:'2054`,:issue:2120

  • 关于在蜘蛛回调中使用BeautifulSoup的新FAQ条目(:issue:2048

  • 添加关于Scrapy不能在使用Python3的Windows上工作的注释 (issue 2060 )

  • 鼓励拉动请求中的完整标题(:issue:2026

测验¶

  • 将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 支持

  • 热门新功能:

    • 项目加载器现在支持嵌套加载器( issue 1467 )

    • FormRequest.from_response 改进( issue 1382 , issue 1137 )

    • 添加了设置:设置:AUTOTHROTTLE_TARGET_CONCURRENCY`和改进的AutoThrottle文档(:issue:`1324)。

    • 添加了``response.text``以将body作为unicode(:issue:1730)。

    • 匿名S3连接( issue 1358 )

    • 下载器中间件中的延迟( issue 1473 )这样可以更好地处理robots.txt( issue 1471 )

    • HTTP缓存现在更接近于RFC2616,增加了设置 HTTPCACHE_ALWAYS_STOREHTTPCACHE_IGNORE_RESPONSE_CACHE_CONTROLS ( issue 1151 )

    • 选择器被提取到Parsel_u库( issue 1409 )这意味着您可以使用没有scrapy的scrapy选择器,也可以在不需要升级scrapy的情况下升级选择器引擎。

    • 现在,HTTPS下载器默认情况下执行TLS协议协商,而不是强制使用TLS 1.0。您还可以使用新的 DOWNLOADER_CLIENT_TLS_METHOD .

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

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

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

    • 现在,默认情况下,已为新创建的项目启用robots.txt遵从性( issue 1724 )Scrapy还将等待robots.txt下载,然后再继续爬行。( issue 1735 )如果要禁用此行为,请更新 ROBOTSTXT_OBEY 在里面 settings.py 创建新项目后的文件。

    • 导出器现在使用unicode,而不是默认的字节 (issue 1080 )如果你使用 PythonItemExporter ,您可能希望更新代码以禁用二进制模式,但现在已弃用该模式。

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

    • 将文件或图像上载到S3时(使用 FilesPipelineImagesPipeline )默认的acl策略现在是“private”而不是“public”**警告:向后不兼容!**你可以使用 FILES_STORE_S3_ACL 改变它。

    • 我们重新实施了 canonicalize_url() 以获得更正确的输出,尤其是包含非ASCII字符的URL (issue 1947 ). 这可能会改变链接提取器的输出相比以前的破烂版本。这也可能使您在1.1之前的运行中仍然存在的一些缓存项失效。 警告:向后不兼容! .

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

Beta Python 3 支持¶

我们一直在努力使Scrapy在Python 3上运行<https://github.com/scrapy/scrapy/wiki/Python-3-Porting>`_。 因此,现在您可以在Python 3.3,3.4和3.5上运行蜘蛛(需要Twisted> = 15.5)。 某些功能仍然缺失(有些功能可能永远不会被移植)。

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

  • Scrapy不适用于使用python 3的Windows

  • 不支持发送电子邮件

  • 不支持ftp下载处理程序

  • 不支持telnet控制台

其他新功能和增强功能¶

  • Scrapy现在有一个 Code of Conduct (issue 1681) .

  • 命令行工具现在已经完成了zsh( issue 934 )

  • 改进 scrapy shell

    • 支持bpython并通过 SCRAPY_PYTHON_SHELL ( issue 1100 , issue 1444 )

    • 支持没有方案的URL( issue 1498 )**警告:向后不兼容!**

    • 恢复对相对文件路径的支持( issue 1710 , issue 1550 )

  • 补充 MEMUSAGE_CHECK_INTERVAL_SECONDS 更改默认检查间隔的设置( issue 1282 )

  • 下载处理程序现在使用其方案在第一个请求上延迟加载( issue 1390 , issue 1421 )

  • HTTPS下载处理程序不再强制TLS 1.0;相反,OpenSSL的 SSLv23_method()/TLS_method() 用于允许尝试与远程主机协商其可以达到的最高TLS协议版本( issue 1794 , issue 1629 )

  • RedirectMiddleware 现在跳过状态代码 handle_httpstatus_list 蜘蛛属性或 Requestmeta 密钥(密钥) issue 1334 , issue 1364 , issue 1447 )

  • 表格提交:

    • 现在也可以使用``<button>``元素(:issue:1469)。

    • 空字符串现在用于没有值的提交按钮( issue 1472 )

  • 类似dict的设置现在具有每个键的优先级( issue 1135 , issue 1149 和 issue 1586 )

  • 发送非ASCII电子邮件( issue 1662 )

  • CloseSpiderSpiderState 如果没有设置相关设置,扩展现在将被禁用。( issue 1723 , issue 1725 )

  • 添加的方法 ExecutionEngine.close ( issue 1423 )

  • 添加的方法 CrawlerRunner.create_crawler ( issue 1528 )

  • 调度程序优先级队列现在可以通过 SCHEDULER_PRIORITY_QUEUE ( issue 1822 )

  • .pps 默认情况下,链接提取器中的链接现在被忽略。( issue 1835 )

  • 可以使用新的 FEED_TEMPDIR 设置( issue 1847 )

  • FilesPipelineImagesPipeline 设置现在是实例属性而不是类属性,启用特定于蜘蛛的行为( issue 1891 )

  • ``JsonItemExporter``现在在它们自己的行(输出文件的第一行和最后一行)(:issue:1950)上格式化开始和结束方括号。

  • 如果可用,botocore``用于``S3FeedStorage``S3DownloadHandler``和``S3FilesStore``(:issue:1761,:issue:1883)。

  • 大量文档更新和相关修复( issue 1291 , issue 1302 , issue 1335 , issue 1683 , issue 1660 , issue 1642 , issue 1721 , issue 1727 , issue 1879 )

  • 其他重构、优化和清理( issue 1476 , issue 1481 , issue 1477 , issue 1315 , issue 1290 , issue 1750 , issue 1881 )

弃用和移除¶

  • 补充 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 .

重新定位¶

  • telnetconsole 被重新安置到 extensions/ ( issue 1524 )

    • 注意:在python 3上没有启用telnet(https://github.com/scrapy/scrapy/pull/1524 issuecomment-146985595)

错误修正¶

  • Scrapy不会重试 HTTP 400 Bad Request 回复了。( issue 1289 )**警告:向后不兼容!**

  • 支持http_proxy config的空密码( issue 1274 )

  • 解读 application/x-json 作为 TextResponse ( issue 1333 )

  • 支持多值链接rel属性( issue 1201 )

  • 当有一个``<base>``标签(:issue:1564)时,修复了``scrapy.http.FormRequest.from_response``。

  • 修正:设置:TEMPLATES_DIR`处理(:issue:`1575)。

  • 各种各样 FormRequest 修复( issue 1595 , issue 1596 , issue 1597 )

  • 使 _monkeypatches 更健壮( issue 1634 )

  • 修复了``XMLItemExporter``中带有非字符串字段的错误(:issue:1738)。

  • 修正了macOS中的startproject命令 (issue 1635 )

  • 固定的 PythonItemExporter 和CSVExporter用于非字符串项类型 (issue 1737 )

  • 各种与日志相关的修复( issue 1294 , issue 1419 , issue 1263 , issue 1624 , issue 1654 , issue 1722 , issue 1726 和 issue 1303 )

  • 修复了``utils.template.render_templatefile()``(:issue:1212)中的错误。

  • 从``robots.txt``中提取的站点地图现在不区分大小写(:issue:1902)。

  • 当使用多个代理到同一个远程主机时,HTTPS + CONNECT隧道可能会混淆(:issue:1912)。

Beta Python 3 支持¶

我们一直在努力使Scrapy在Python 3上运行<https://github.com/scrapy/scrapy/wiki/Python-3-Porting>`_。 因此,现在您可以在Python 3.3,3.4和3.5上运行蜘蛛(需要Twisted> = 15.5)。 某些功能仍然缺失(有些功能可能永远不会被移植)。

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

  • Scrapy不适用于使用python 3的Windows

  • 不支持发送电子邮件

  • 不支持ftp下载处理程序

  • 不支持telnet控制台

其他新功能和增强功能¶

  • Scrapy现在有一个 Code of Conduct (issue 1681) .

  • 命令行工具现在已经完成了zsh( issue 934 )

  • 改进 scrapy shell

    • 支持bpython并通过 SCRAPY_PYTHON_SHELL ( issue 1100 , issue 1444 )

    • 支持没有方案的URL( issue 1498 )**警告:向后不兼容!**

    • 恢复对相对文件路径的支持( issue 1710 , issue 1550 )

  • 补充 MEMUSAGE_CHECK_INTERVAL_SECONDS 更改默认检查间隔的设置( issue 1282 )

  • 下载处理程序现在使用其方案在第一个请求上延迟加载( issue 1390 , issue 1421 )

  • HTTPS下载处理程序不再强制TLS 1.0;相反,OpenSSL的 SSLv23_method()/TLS_method() 用于允许尝试与远程主机协商其可以达到的最高TLS协议版本( issue 1794 , issue 1629 )

  • RedirectMiddleware 现在跳过状态代码 handle_httpstatus_list 蜘蛛属性或 Requestmeta 密钥(密钥) issue 1334 , issue 1364 , issue 1447 )

  • 表格提交:

    • 现在也可以使用``<button>``元素(:issue:1469)。

    • 空字符串现在用于没有值的提交按钮( issue 1472 )

  • 类似dict的设置现在具有每个键的优先级( issue 1135 , issue 1149 和 issue 1586 )

  • 发送非ASCII电子邮件( issue 1662 )

  • CloseSpiderSpiderState 如果没有设置相关设置,扩展现在将被禁用。( issue 1723 , issue 1725 )

  • 添加的方法 ExecutionEngine.close ( issue 1423 )

  • 添加的方法 CrawlerRunner.create_crawler ( issue 1528 )

  • 调度程序优先级队列现在可以通过 SCHEDULER_PRIORITY_QUEUE ( issue 1822 )

  • .pps 默认情况下,链接提取器中的链接现在被忽略。( issue 1835 )

  • 可以使用新的 FEED_TEMPDIR 设置( issue 1847 )

  • FilesPipelineImagesPipeline 设置现在是实例属性而不是类属性,启用特定于蜘蛛的行为( issue 1891 )

  • ``JsonItemExporter``现在在它们自己的行(输出文件的第一行和最后一行)(:issue:1950)上格式化开始和结束方括号。

  • 如果可用,botocore``用于``S3FeedStorage``S3DownloadHandler``和``S3FilesStore``(:issue:1761,:issue:1883)。

  • 大量文档更新和相关修复( issue 1291 , issue 1302 , issue 1335 , issue 1683 , issue 1660 , issue 1642 , issue 1721 , issue 1727 , issue 1879 )

  • 其他重构、优化和清理( issue 1476 , issue 1481 , issue 1477 , issue 1315 , issue 1290 , issue 1750 , issue 1881 )

弃用和移除¶

  • 补充 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 .

重新定位¶

  • telnetconsole 被重新安置到 extensions/ ( issue 1524 )

    • 注意:在python 3上没有启用telnet(https://github.com/scrapy/scrapy/pull/1524 issuecomment-146985595)

错误修正¶

  • Scrapy不会重试 HTTP 400 Bad Request 回复了。( issue 1289 )**警告:向后不兼容!**

  • 支持http_proxy config的空密码( issue 1274 )

  • 解读 application/x-json 作为 TextResponse ( issue 1333 )

  • 支持多值链接rel属性( issue 1201 )

  • 当有一个``<base>``标签(:issue:1564)时,修复了``scrapy.http.FormRequest.from_response``。

  • 修正:设置:TEMPLATES_DIR`处理(:issue:`1575)。

  • 各种各样 FormRequest 修复( issue 1595 , issue 1596 , issue 1597 )

  • 使 _monkeypatches 更健壮( issue 1634 )

  • 修复了``XMLItemExporter``中带有非字符串字段的错误(:issue:1738)。

  • 修正了macOS中的startproject命令 (issue 1635 )

  • 固定的 PythonItemExporter 和CSVExporter用于非字符串项类型 (issue 1737 )

  • 各种与日志相关的修复( issue 1294 , issue 1419 , issue 1263 , issue 1624 , issue 1654 , issue 1722 , issue 1726 和 issue 1303 )

  • 修复了``utils.template.render_templatefile()``(:issue:1212)中的错误。

  • 从``robots.txt``中提取的站点地图现在不区分大小写(:issue:1902)。

  • 当使用多个代理到同一个远程主机时,HTTPS + CONNECT隧道可能会混淆(:issue:1912)。

Scrapy 1.0.7(2017-03-03)¶

  • 打包修复:禁止在setup.py中支持不受支持的Twisted版本

Scrapy 1.0.6(2016-05-04)¶

  • 修正:retrymiddleware现在对非标准的HTTP状态代码是健壮的。( issue 1857 )

  • 修复:文件存储HTTP缓存正在检查错误的修改时间( issue 1875 )

  • DOC:支持Sphinx 1.4+(:issue:1893

  • 文档:选择器示例的一致性( issue 1869 )

Scrapy 1.0.5(2016-02-04)¶

  • FIX:[Backport]忽略LinkExtractors中的伪造链接(修复:问题:907,:commit:108195e

  • TST:更改了buildbot makefile以使用'pytest'(:commit:1f3d90a

  • 文档:修复了教程和媒体管道中的拼写错误( commit 808a9ea 和 commit 803bd87 )

  • 文档:在设置文档中将ajaxcrawlMiddleware添加到下载器中间件库( commit aa94121 )

Scrapy 1.0.4(2015-12-30)¶

  • 忽略xlib/tx文件夹,具体取决于Twisted版本。( commit 7dfa979 )

  • 在新Travis CI Infra上运行( commit 6e42f0b )

  • 拼写修复( commit 823a1cc )

  • 在xmliter regex中转义nodename( commit da3c155 )

  • 用点测试XML节点名( commit 4418fc3 )

  • 测试中不要使用坏Pillow 版本( commit a55078c )

  • 禁用登录版本命令。关闭α1426 commit 86fc330 )

  • 禁用登录StartProject命令( commit db4c9fe )

  • 添加pypi下载状态徽章( commit df2b944 )

  • 如果一个pr是由一个报废/报废的分支生成的,则不要在travis上运行两次测试。( commit a83ab41 )

  • 在自述文件中添加python 3移植状态徽章( commit 73ac80d )

  • 修复了RFPDupeFilter持久性(:commit:97d080e

  • TST显示Dupefilter持久性不起作用的测试( commit 97f2fb3 )

  • 在file://scheme handler上显式关闭文件( commit d9b4850 )

  • 禁用shell中的dupefilter( commit c0d0734 )

  • 文档:向侧边栏中显示的目录树添加标题( commit aa239ad )

  • Doc从安装说明中删除了pywin32,因为它已经声明为依赖项。( commit 10eb400 )

  • 添加了有关在Windows和其他操作系统中使用Conda的安装说明。( commit 1c3600a )

  • 修正了小语法问题。( commit 7f4ddd5 )

  • 修正了文档中的拼写错误。( commit b71f677 )

  • 版本1现在存在( commit 5456c0e )

  • 修复另一个无效的xpath错误( commit 0a1366e )

  • 修复值错误:selectors.rst上的xpath://div/[id=“not exists”]/text()无效( commit ca8d60f )

  • 拼写错误更正( commit 7067117 )

  • 修复downloader-middleware.rst和exceptions.rst中的拼写错误,middlware->middleware( commit 32f115c )

  • 在Ubuntu安装部分添加关于Debian兼容性的说明 (commit 23fda69 )

  • 用virtualenv替代macOS安装解决方案 (commit 98b63ee )

  • 有关安装说明,请参阅自制主页。( commit 1925db1 )

  • 将最旧支持的TOX版本添加到参与文档( commit 5d10d6d )

  • 安装文档中关于pip已经包含在python中的说明>=2.7.9( commit 85c980e )

  • 在文档的Ubuntu安装部分添加非python依赖项( commit fbd010d )

  • 将macOS安装部分添加到文档 (commit d8f4cba )

  • 文档(enh):显式指定RTD主题的路径( commit de73b1a )

  • 次要:scrapy.spider docs语法( commit 1ddcc7b )

  • 使常用实践示例代码与注释匹配( commit 1b85bcf )

  • 下一个重复呼叫(心跳)。( commit 55f7104 )

  • 与Twisted 15.4.0的后端修复兼容性( commit b262411 )

  • 插脚Pytest至2.7.3( commit a6535c2 )

  • 合并请求1512来自mgedmin/patch-1( commit 8876111 )

  • 合并请求1513来自mgedmin/patch-2( commit 5d4daf8 )

  • Typo commit f8d0682 )

  • 修复列表格式( commit 5f83a93 )

  • 修复最近对queuelib的更改后的混乱测试 (commit 3365c01 )

  • 合并请求1475来自RWEindl/Patch-1( commit 2d688cd )

  • 更新tutorial.rst( commit fbc1f25 )

  • 合并请求1449,来自Rhoekman/Patch-1( commit 7d6538c )

  • 小的语法变化( commit 8752294 )

  • 将openssl版本添加到version命令( commit 13c45ac )

Scrapy 1.0.3(2015-08-11)¶

  • 将服务标识添加到Scrapy installu requires (commit cbc2501 )

  • Travis的解决方案296( commit 66af9cd )

Scrapy 1.0.2(2015-08-06)¶

  • Twisted 15.3.0不会引发picklinger或序列化lambda函数( commit b04dd7d )

  • 次要方法名称修复( commit 6f85c7f )

  • 小调:下流。蜘蛛语法和清晰度( commit 9c9d2e0 )

  • 宣传支持渠道( commit c63882b )

  • 拼写错误(:commit:a9ae7b0

  • 修复文档引用。( commit 7c8a4fe )

Scrapy 1.0.1(2015-07-01)¶

  • 在传递到ftpclient之前取消引用请求路径,它已经转义了路径( commit cc00ad2 )

  • 在清单中包括测试/到源分发。( commit eca227e )

  • Doc Fix SelectJMES文档( commit b8567bc )

  • Doc将Ubuntu和ArchLinux带到Windows子部分之外( commit 392233f )

  • DOC从Ubuntu包中删除版本后缀 (commit 5303c66 )

  • 1.0的文档更新发布日期( commit c89fa29 )

Scrapy 1.0.0(2015-06-19)¶

在这个主要版本中,您会发现许多新的特性和错误修复。确保检查我们的更新 overview 看看其中的一些变化,以及我们的刷 tutorial .

支持在spiders中返回字典¶

声明和返回 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)¶

去年的谷歌夏季代码项目完成了一项重要的机制重新设计,用于填充设置,引入明确的优先级来覆盖任何给定的设置。作为该目标的扩展,我们为专门针对单个蜘蛛的设置提供了新的优先级,允许它们重新定义项目设置。

通过定义 custom_settings 蜘蛛中的类变量:

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

阅读有关设置填充的详细信息: 设置

Python 测井¶

Scrapy1.0已经从扭曲的日志记录转移到支持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)¶

上一个谷歌夏季代码的另一个里程碑是对内部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可能会更改,直到达到稳定状态。

请参阅运行scrappy的脚本的更多示例: 常用做法

模块重新定位¶

为了改善 Scrapy 的总体结构,模块进行了大量的重新排列。主要的变化是将不同的子包分离成新的项目,并同时解散这两个项目。 scrapy.contribscrapy.contrib_exp 到顶级包中。内部重新定位之间保持向后兼容性,而导入不推荐使用的模块时会收到指示其新位置的警告。

重新定位的完整列表¶

外包包

注解

这些扩展进行了一些小的更改,例如更改了一些设置名称。请检查每个新存储库中的文档以熟悉新用法。

老位置

新位置

scrapy.commands.deploy

scrapyd-client (见其他备选方案: 部署蜘蛛

scrapy.contrib.djangoitem

scrapy-djangoitem

scrapy.webservice

scrapy-jsonrpc

scrapy.contrib_expscrapy.contrib 溶解

老位置

新位置

scrapy.contribexp.downloadermiddleware.解压缩

scrapy.downloadermiddleware.decompresson

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.dupefilters

scrapy.linkextractor

scrapy.linkextractors

scrapy.spider

scrapy.spiders

scrapy.squeue

scrapy.squeues

scrapy.statscol

scrapy.statscollectors

scrapy.utils.decorator

scrapy.utils.decorators

类重命名

老位置

新位置

scrapy.spidermanager.SpiderManager

scrapy.spiderloader.SpiderLoader

设置重命名

老位置

新位置

SPIDER_MANAGER_CLASS

SPIDER_LOADER_CLASS

Changelog¶

新功能和增强功能

  • Python日志( issue 1060 , issue 1235 , issue 1236 , issue 1240 , issue 1259 , issue 1278 , issue 1286 )

  • FEED_EXPORT_FIELDS选项( issue 1159 , issue 1224 )

  • DNS缓存大小和超时选项( issue 1132 )

  • 支持xmliter?lxml中的命名空间前缀( issue 963 )

  • 反应器线程池最大大小设置( issue 1123 )

  • 允许蜘蛛返回听写。( issue 1081 )

  • 添加response.urljoin()帮助程序( issue 1086 )

  • 在~/.config/scrappy.cfg中查找用户配置( issue 1098 )

  • 处理TLS SNI( issue 1101 )

  • 选择列表先提取( issue 624 , issue 1145 )

  • 添加了jmesselect( issue 1016 )

  • 将gzip压缩添加到文件系统HTTP缓存后端( issue 1020 )

  • 链接提取器中的CSS支持( issue 983 )

  • httpcache不缓存meta 19 689( issue 821 )

  • 添加调度程序丢弃请求时要发送的信号( issue 961 )

  • 避免下载大响应( issue 946 )

  • 允许在csvfeedspider中指定QuoteCar( issue 882 )

  • 添加对“蜘蛛错误处理”日志消息的引用( issue 795 )

  • 处理robots.txt一次( issue 896 )

  • 每个蜘蛛的GSOC设置( issue 854 )

  • 添加项目名称验证( issue 817 )

  • GSOC API清理( issue 816 , issue 1128 , issue 1147 , issue 1148 , issue 1156 , issue 1185 , issue 1187 , issue 1258 , issue 1268 , issue 1276 , issue 1285 , issue 1284 )

  • 对IO操作的响应能力更强( issue 1074 和 issue 1075 )

  • 关闭时对httpcache执行leveldb压缩( issue 1297 )

弃用和移除

  • 取消预测htmlparser链接提取程序( issue 1205 )

  • 从FeedExporter中删除已弃用的代码( issue 1155 )

  • 用于.15兼容性的剩余部分( issue 925 )

  • 放弃对每个蜘蛛并发请求的支持( issue 895 )

  • 删除旧的发动机代码( issue 911 )

  • 拆除SGMLLinkextractor( issue 777 )

重新定位

  • 将exporters/uuu init_uuu.py移动到exporters.py( issue 1242 )

  • 将基类移动到其包中( issue 1218 , issue 1233 )

  • 模块重新定位( issue 1181 , issue 1210 )

  • 将spiderManager重命名为spiderLoader( issue 1166 )

  • 移除Djangoitem( issue 1177 )

  • 删除报废部署命令( issue 1102 )

  • 解除控制( issue 1134 )

  • 已从根目录中删除bin文件夹,修复913( issue 914 )

  • 删除基于JSONRPC的WebService( issue 859 )

  • 在项目根目录下移动测试用例( issue 827 , issue 841 )

  • 修复设置中重新定位路径的向后不兼容性( issue 1267 )

文档

  • 爬虫过程文档( issue 1190 )

  • 在描述中倾向于使用Web抓取而不是屏幕抓取( issue 1188 )

  • 对Scrapy教程的一些改进( issue 1180 )

  • 将文件管道与图像管道一起记录( issue 1150 )

  • 部署文档调整( issue 1164 )

  • 增加了部署部分,包括 Scrapy 部署和SHUB( issue 1124 )

  • 向项目模板添加更多设置( issue 1073 )

  • 概述页面的一些改进( issue 1106 )

  • 更新了docs/topics/architecture.rst中的链接( issue 647 )

  • 文档重新排序主题( issue 1022 )

  • 更新request.meta特殊键列表( issue 1071 )

  • 文档下载超时( issue 898 )

  • 文档简化扩展文档( issue 893 )

  • 泄漏文档 issue 894 )

  • 项目管道的爬虫方法的文档( issue 904 )

  • 蜘蛛网错误不支持延迟( issue 1292 )

  • 更正和Sphinx相关的修复程序( issue 1220 , issue 1219 , issue 1196 , issue 1172 , issue 1171 , issue 1169 , issue 1160 , issue 1154 , issue 1127 , issue 1112 , issue 1105 , issue 1041 , issue 1082 , issue 1033 , issue 944 , issue 866 , issue 864 , issue 796 , issue 1260 , issue 1271 , issue 1293 , issue 1298 )

错误修正

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

  • ItemLoader.load_item:迭代字段副本( issue 722 )

  • 修复延迟(robotstxtmiddleware)中未处理的错误( issue 1131 , issue 1197 )

  • 强制读取下载超时为int( issue 954 )

  • scrapy.utils.misc.load_对象应打印完整的回溯( issue 902 )

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

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

  • 修复在meta设置为false时不合并cookies的不良行为( issue 846 )

Python 3 进行中支持

  • 如果twisted.conch不可用,则禁用scrappy.telnet( issue 1161 )

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

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

  • 在Python3中,AssertItemSequal被重命名为AssertCountEqual。( issue 1070 )

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

  • 更新了不推荐使用的cgi.parse_qsl以使用six的parse_qsl( issue 909 )

  • 防止python 3端口回归( issue 830 )

  • PY3:对python 3使用可变映射( issue 810 )

  • PY3:使用six.bytesio和six.moves.cstringio( issue 803 )

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

  • PY3:使用6个用于robotparser和urlparse( issue 800 )

  • PY3:使用6.iterkeys、6.iteritems和tempfile( issue 799 )

  • PY3:fix有_键并使用six.moves.configparser( issue 798 )

  • PY3:使用six.moves.cpickle( issue 797 )

  • PY3使在python3中运行一些测试成为可能( issue 776 )

测验

  • 从PY3中删除不必要的行忽略( issue 1243 )

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

  • 将文档生成添加到Travis( issue 1234 )

  • TST不从不推荐使用的模块收集测试。( issue 1165 )

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

  • 修复测试中不推荐使用的设置API( issue 1152 )

  • 使用post方法为WebClient添加测试,但未提供主体( issue 1089 )

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

  • 使一些主张现代化( issue 835 )

  • 选择器。重复测试( issue 779 )

代码重构

  • CSVFeedspider清理:使用迭代蜘蛛网输出( issue 1079 )

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

  • 派送PEP8( issue 992 )

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

  • 为了保持一致,请使用 job_dir 帮手 SpiderState 延伸。( issue 805 )

  • 将“sflo”局部变量重命名为不那么神秘的“log_observer”( issue 775 )

支持在spiders中返回字典¶

声明和返回 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)¶

去年的谷歌夏季代码项目完成了一项重要的机制重新设计,用于填充设置,引入明确的优先级来覆盖任何给定的设置。作为该目标的扩展,我们为专门针对单个蜘蛛的设置提供了新的优先级,允许它们重新定义项目设置。

通过定义 custom_settings 蜘蛛中的类变量:

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

阅读有关设置填充的详细信息: 设置

Python 测井¶

Scrapy1.0已经从扭曲的日志记录转移到支持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)¶

上一个谷歌夏季代码的另一个里程碑是对内部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可能会更改,直到达到稳定状态。

请参阅运行scrappy的脚本的更多示例: 常用做法

模块重新定位¶

为了改善 Scrapy 的总体结构,模块进行了大量的重新排列。主要的变化是将不同的子包分离成新的项目,并同时解散这两个项目。 scrapy.contribscrapy.contrib_exp 到顶级包中。内部重新定位之间保持向后兼容性,而导入不推荐使用的模块时会收到指示其新位置的警告。

重新定位的完整列表¶

外包包

注解

这些扩展进行了一些小的更改,例如更改了一些设置名称。请检查每个新存储库中的文档以熟悉新用法。

老位置

新位置

scrapy.commands.deploy

scrapyd-client (见其他备选方案: 部署蜘蛛

scrapy.contrib.djangoitem

scrapy-djangoitem

scrapy.webservice

scrapy-jsonrpc

scrapy.contrib_expscrapy.contrib 溶解

老位置

新位置

scrapy.contribexp.downloadermiddleware.解压缩

scrapy.downloadermiddleware.decompresson

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.dupefilters

scrapy.linkextractor

scrapy.linkextractors

scrapy.spider

scrapy.spiders

scrapy.squeue

scrapy.squeues

scrapy.statscol

scrapy.statscollectors

scrapy.utils.decorator

scrapy.utils.decorators

类重命名

老位置

新位置

scrapy.spidermanager.SpiderManager

scrapy.spiderloader.SpiderLoader

设置重命名

老位置

新位置

SPIDER_MANAGER_CLASS

SPIDER_LOADER_CLASS

重新定位的完整列表¶

外包包

注解

这些扩展进行了一些小的更改,例如更改了一些设置名称。请检查每个新存储库中的文档以熟悉新用法。

老位置

新位置

scrapy.commands.deploy

scrapyd-client (见其他备选方案: 部署蜘蛛

scrapy.contrib.djangoitem

scrapy-djangoitem

scrapy.webservice

scrapy-jsonrpc

scrapy.contrib_expscrapy.contrib 溶解

老位置

新位置

scrapy.contribexp.downloadermiddleware.解压缩

scrapy.downloadermiddleware.decompresson

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.dupefilters

scrapy.linkextractor

scrapy.linkextractors

scrapy.spider

scrapy.spiders

scrapy.squeue

scrapy.squeues

scrapy.statscol

scrapy.statscollectors

scrapy.utils.decorator

scrapy.utils.decorators

类重命名

老位置

新位置

scrapy.spidermanager.SpiderManager

scrapy.spiderloader.SpiderLoader

设置重命名

老位置

新位置

SPIDER_MANAGER_CLASS

SPIDER_LOADER_CLASS

Changelog¶

新功能和增强功能

  • Python日志( issue 1060 , issue 1235 , issue 1236 , issue 1240 , issue 1259 , issue 1278 , issue 1286 )

  • FEED_EXPORT_FIELDS选项( issue 1159 , issue 1224 )

  • DNS缓存大小和超时选项( issue 1132 )

  • 支持xmliter?lxml中的命名空间前缀( issue 963 )

  • 反应器线程池最大大小设置( issue 1123 )

  • 允许蜘蛛返回听写。( issue 1081 )

  • 添加response.urljoin()帮助程序( issue 1086 )

  • 在~/.config/scrappy.cfg中查找用户配置( issue 1098 )

  • 处理TLS SNI( issue 1101 )

  • 选择列表先提取( issue 624 , issue 1145 )

  • 添加了jmesselect( issue 1016 )

  • 将gzip压缩添加到文件系统HTTP缓存后端( issue 1020 )

  • 链接提取器中的CSS支持( issue 983 )

  • httpcache不缓存meta 19 689( issue 821 )

  • 添加调度程序丢弃请求时要发送的信号( issue 961 )

  • 避免下载大响应( issue 946 )

  • 允许在csvfeedspider中指定QuoteCar( issue 882 )

  • 添加对“蜘蛛错误处理”日志消息的引用( issue 795 )

  • 处理robots.txt一次( issue 896 )

  • 每个蜘蛛的GSOC设置( issue 854 )

  • 添加项目名称验证( issue 817 )

  • GSOC API清理( issue 816 , issue 1128 , issue 1147 , issue 1148 , issue 1156 , issue 1185 , issue 1187 , issue 1258 , issue 1268 , issue 1276 , issue 1285 , issue 1284 )

  • 对IO操作的响应能力更强( issue 1074 和 issue 1075 )

  • 关闭时对httpcache执行leveldb压缩( issue 1297 )

弃用和移除

  • 取消预测htmlparser链接提取程序( issue 1205 )

  • 从FeedExporter中删除已弃用的代码( issue 1155 )

  • 用于.15兼容性的剩余部分( issue 925 )

  • 放弃对每个蜘蛛并发请求的支持( issue 895 )

  • 删除旧的发动机代码( issue 911 )

  • 拆除SGMLLinkextractor( issue 777 )

重新定位

  • 将exporters/uuu init_uuu.py移动到exporters.py( issue 1242 )

  • 将基类移动到其包中( issue 1218 , issue 1233 )

  • 模块重新定位( issue 1181 , issue 1210 )

  • 将spiderManager重命名为spiderLoader( issue 1166 )

  • 移除Djangoitem( issue 1177 )

  • 删除报废部署命令( issue 1102 )

  • 解除控制( issue 1134 )

  • 已从根目录中删除bin文件夹,修复913( issue 914 )

  • 删除基于JSONRPC的WebService( issue 859 )

  • 在项目根目录下移动测试用例( issue 827 , issue 841 )

  • 修复设置中重新定位路径的向后不兼容性( issue 1267 )

文档

  • 爬虫过程文档( issue 1190 )

  • 在描述中倾向于使用Web抓取而不是屏幕抓取( issue 1188 )

  • 对Scrapy教程的一些改进( issue 1180 )

  • 将文件管道与图像管道一起记录( issue 1150 )

  • 部署文档调整( issue 1164 )

  • 增加了部署部分,包括 Scrapy 部署和SHUB( issue 1124 )

  • 向项目模板添加更多设置( issue 1073 )

  • 概述页面的一些改进( issue 1106 )

  • 更新了docs/topics/architecture.rst中的链接( issue 647 )

  • 文档重新排序主题( issue 1022 )

  • 更新request.meta特殊键列表( issue 1071 )

  • 文档下载超时( issue 898 )

  • 文档简化扩展文档( issue 893 )

  • 泄漏文档 issue 894 )

  • 项目管道的爬虫方法的文档( issue 904 )

  • 蜘蛛网错误不支持延迟( issue 1292 )

  • 更正和Sphinx相关的修复程序( issue 1220 , issue 1219 , issue 1196 , issue 1172 , issue 1171 , issue 1169 , issue 1160 , issue 1154 , issue 1127 , issue 1112 , issue 1105 , issue 1041 , issue 1082 , issue 1033 , issue 944 , issue 866 , issue 864 , issue 796 , issue 1260 , issue 1271 , issue 1293 , issue 1298 )

错误修正

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

  • ItemLoader.load_item:迭代字段副本( issue 722 )

  • 修复延迟(robotstxtmiddleware)中未处理的错误( issue 1131 , issue 1197 )

  • 强制读取下载超时为int( issue 954 )

  • scrapy.utils.misc.load_对象应打印完整的回溯( issue 902 )

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

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

  • 修复在meta设置为false时不合并cookies的不良行为( issue 846 )

Python 3 进行中支持

  • 如果twisted.conch不可用,则禁用scrappy.telnet( issue 1161 )

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

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

  • 在Python3中,AssertItemSequal被重命名为AssertCountEqual。( issue 1070 )

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

  • 更新了不推荐使用的cgi.parse_qsl以使用six的parse_qsl( issue 909 )

  • 防止python 3端口回归( issue 830 )

  • PY3:对python 3使用可变映射( issue 810 )

  • PY3:使用six.bytesio和six.moves.cstringio( issue 803 )

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

  • PY3:使用6个用于robotparser和urlparse( issue 800 )

  • PY3:使用6.iterkeys、6.iteritems和tempfile( issue 799 )

  • PY3:fix有_键并使用six.moves.configparser( issue 798 )

  • PY3:使用six.moves.cpickle( issue 797 )

  • PY3使在python3中运行一些测试成为可能( issue 776 )

测验

  • 从PY3中删除不必要的行忽略( issue 1243 )

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

  • 将文档生成添加到Travis( issue 1234 )

  • TST不从不推荐使用的模块收集测试。( issue 1165 )

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

  • 修复测试中不推荐使用的设置API( issue 1152 )

  • 使用post方法为WebClient添加测试,但未提供主体( issue 1089 )

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

  • 使一些主张现代化( issue 835 )

  • 选择器。重复测试( issue 779 )

代码重构

  • CSVFeedspider清理:使用迭代蜘蛛网输出( issue 1079 )

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

  • 派送PEP8( issue 992 )

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

  • 为了保持一致,请使用 job_dir 帮手 SpiderState 延伸。( issue 805 )

  • 将“sflo”局部变量重命名为不那么神秘的“log_observer”( issue 775 )

Scrapy 0.24.6(2015-04-20)¶

  • 使用py2下的unicode_转义对无效的xpath进行编码( commit 07cb3e5 )

  • 修复ipython shell作用域问题并加载ipython用户配置( commit 2c8e573 )

  • 修复文档中的小错误( commit d694019 )

  • 修复小错字(:commit:f92fa83

  • 在提取数据时已将sel.xpath()调用转换为response.xpath()。( commit c2c6d15 )

Scrapy 0.24.5(2015-02-25)¶

  • 在Twisted 15.0.0上支持新的getEndpoint代理签名( commit 540b9bc )

  • 多了几个参考文献( commit b4c454b )

  • 文档修复引用( commit e3c1260 )

  • t.i.b.ThreadeDresolver现在是一个新的类( commit 9e13f42 )

  • S3DownloadHandler:修复带引用路径/查询参数的请求的身份验证( commit cdb9a0b )

  • 修复了mailsender文档中的变量类型( commit bb3a848 )

  • 重置项目而不是项目计数( commit edb07a4 )

  • 关于阅读什么文件供贡献的暂定注意信息( commit 7ee6f7a )

  • mitmproxy 0.10.1也需要Netlib 0.10.1( commit 874fcdd )

  • 销Mitmproxy 0.10.1 as>0.11不适用于测试( commit c6b21f0 )

  • 在本地测试parse命令,而不是针对外部URL( commit c3a6628 )

  • 关闭httpDownloadHandler上的连接池时出现补丁扭曲问题( commit d0bf957 )

  • 更新动态项类的文档。( commit eeb589a )

  • 来自Lazar-T/Patch-3的合并请求943( commit 5fdab02 )

  • 错字(:commit:b0ae199

  • twisted需要pywin32。关闭α937 commit 5cb0cfb )

  • 更新install.rst( commit 781286b )

  • 来自Lazar-T/Patch-1的合并请求928( commit b415d04 )

  • 逗号而不是句号( commit 627b9ba )

  • 合并请求885来自JSMA/Patch-1( commit de909ad )

  • 更新request-response.rst( commit 3f3263d )

  • BaseSgmlLinkExtractor:用于解析存在unicode的<area>标记的修复程序( commit 49b40f0 )

Scrapy 0.24.4(2014-08-09)¶

  • mockserver使用PEM文件,scrapy bench需要。( commit 5eddc68 )

  • 下脚料台需要下脚料。测试*( commit d6cb999 )

Scrapy 0.24.3(2014-08-09)¶

  • 无需在PY3上浪费Travis CI时间0.24( commit 8e080c1 )

  • 更新安装文档( commit 1d0c096 )

  • 有一个特洛夫分类器为 Scrapy 框架!( commit 4c701d7 )

  • 更新提到w3lib版本的其他位置( commit d109c13 )

  • 将w3lib要求更新为1.8.0( commit 39d2ce5 )

  • 使用w3lib.html.replace_entities()(不推荐使用remove_entities())( commit 180d3ad )

  • 设置zip_safe=false( commit a51ee8b )

  • 不装运测试包( commit ee3b371 )

  • 不再需要scrappy.bat( commit c3861cf )

  • 现代化设置.py( commit 362e322 )

  • 头不能处理非字符串值( commit 94a5c65 )

  • 修复FTP测试用例( commit a274a7f )

  • Travis CI构建的总结大约需要50分钟才能完成。( commit ae1e2cc )

  • 更新shell.rst typo( commit e49c96a )

  • 删除shell结果中的奇怪缩进( commit 1ca489d )

  • 改进了解释,澄清了博客文章的来源,在规范中添加了xpath字符串函数的链接( commit 65c8f05 )

  • 已重命名usertimeouterrror和servertimeouterrror 583( commit 037f6ab )

  • 向选择器文档添加一些XPath提示( commit 2d103e0 )

  • 修复测试以解释https://github.com/scrappy/w3lib/pull/23( commit f8d366a )

  • 获取_func_参数最大递归修复728( commit 81344ea )

  • 根据560更新输入/输出处理器示例。( commit f7c4ea8 )

  • 修复了教程中的python语法。( commit db59ed9 )

  • 为隧道代理添加测试用例( commit f090260 )

  • 使用隧道时将代理授权头泄漏到远程主机的错误修复( commit d8793af )

  • 从具有mime类型“application/xml”的xhtml文档中提取链接( commit ed1f376 )

  • 合并请求来自Roysc/Patch-1的793( commit 91a1106 )

  • 修复commands.rst中的拼写错误( commit 743e1e2 )

  • settings.overrides.setdefault的更好测试用例( commit e22daaf )

  • 根据HTTP 1.1定义使用CRLF作为行标记( commit 5ec430b )

Scrapy 0.24.2(2014-07-08)¶

  • 使用可变映射来代理不推荐使用的设置。overrides和settings.defaults属性( commit e5e8133 )

  • 尚未支持python3( commit 3cd6146 )

  • 将python兼容版本集更新为Debian包 (commit fa5d76b )

  • 发行说明中的文档修复格式( commit c6a9e20 )

Scrapy 0.24.1(2014-06-27)¶

  • 修复不推荐使用的Crawlersettings并提高与.defaults属性的向后兼容性( commit 8e3f20a )

Scrapy 0.24.0(2014-06-26)¶

增强功能¶

  • 改进残缺的顶级命名空间( issue 494 , issue 684 )

  • 向响应添加选择器快捷方式( issue 554 , issue 690 )

  • 添加新的基于lxml的LinkExtractor以替换未维护的SgmlLinkExtractor (issue 559 , issue 761 , issue 763 )

  • 清理设置API-每个蜘蛛设置的一部分 GSoC project ( issue 737 )

  • 将utf8编码头添加到模板( issue 688 , issue 762 )

  • Telnet控制台现在默认绑定到127.0.0.1( issue 699 )

  • 更新Debian/Ubuntu安装说明 (issue 509 , issue 549 )

  • 禁用LXML XPath计算中的智能字符串( issue 535 )

  • 将基于文件系统的缓存还原为HTTP缓存中间件的默认缓存( issue 541 , issue 500 , issue 571 )

  • 将当前爬行器暴露在 Scrapy 壳中( issue 557 )

  • 改进测试套件,比较csv和xml导出器( issue 570 )

  • 新的 offsite/filteredoffsite/domains 统计数据(统计) issue 566 )

  • 在Crawlspiper中支持进程链接作为生成器( issue 555 )

  • DupeFilter的详细日志记录和新统计计数器( issue 553 )

  • 将mimetype参数添加到 MailSender.send() ( issue 602 )

  • 通用化文件管道日志消息( issue 622 )

  • 用sgmlinkextractor中的HTML实体替换不可编码的代码点( issue 565 )

  • 已将SEP文档转换为RST格式( issue 629 , issue 630 , issue 638 , issue 632 , issue 636 , issue 640 , issue 635 , issue 634 , issue 639 , issue 637 , issue 631 , issue 633 , issue 641 , issue 642 )

  • 用于表单请求中ClickData的nr索引的测试和文档( issue 646 , issue 645 )

  • 允许像禁用任何其他组件一样禁用下载程序处理程序( issue 650 )

  • 在重定向过多后放弃请求时记录( issue 654 )

  • 如果蜘蛛回调不处理错误响应,则记录错误响应( issue 612 , issue 656 )

  • 向HTTP压缩mw添加内容类型检查( issue 193 , issue 660 )

  • 使用来自ppa的最新pypi运行pypypy测试( issue 674 )

  • 使用pytest而不是trial运行测试套件( issue 679 )

  • 建立文档并检查毒物环境中的死链接( issue 687 )

  • 使scrappy.versionu info成为整数的元组( issue 681 , issue 692 )

  • 从文件扩展名推断导出程序的输出格式( issue 546 , issue 659 , issue 760 )

  • 在中支持不区分大小写的域 url_is_from_any_domain() ( issue 693 )

  • 删除项目和Spider模板中的PEP8警告( issue 698 )

  • 测试和文档 request_fingerprint 功能( issue 597 )

  • GSOC项目9月19日更新 per-spider settings ( issue 705 )

  • 合同失败时,将退出代码设置为非零( issue 727 )

  • 添加一个设置来控制实例化为下载程序组件的类 (issue 738 )

  • 传入响应 item_dropped 信号(信号) issue 724 )

  • 改进 scrapy check 合同指挥部( issue 733 , issue 752 )

  • 文件 spider.closed() 快捷方式(捷径” issue 719 )

  • 文件 request_scheduled 信号(信号) issue 746 )

  • 添加有关报告安全问题的说明( issue 697 )

  • 添加LevelDB HTTP缓存存储后端( issue 626 , issue 500 )

  • 排序蜘蛛列表输出 scrapy list 命令( issue 742 )

  • 多个文档增强和修复 (issue 575 , issue 587 , issue 590 , issue 596 , issue 610 , issue 617 , issue 618 , issue 627 , issue 613 , issue 643 , issue 654 , issue 675 , issue 663 , issue 711 , issue 714 )

错误修正¶

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

  • 忽略项加载器处理器中的无值( issue 556 )

  • 当sgmlinkxtractor和htmlparserlinkextractor中存在内部标记时修复链接文本( issue 485 , issue 574 )

  • 修复对已弃用类的子类的错误检查( issue 581 , issue 584 )

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

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

  • 修复类型()的动态项类示例用法( issue 603 )

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

  • 将sgmlinkextractor中attrs参数的默认值固定为tuple( issue 661 )

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

  • 修复引擎以支持筛选的启动请求( issue 707 )

  • 在没有主机名的URL上修复非现场中间件案例( issue 745 )

  • 测试套件不再需要PIL( issue 585 )

增强功能¶

  • 改进残缺的顶级命名空间( issue 494 , issue 684 )

  • 向响应添加选择器快捷方式( issue 554 , issue 690 )

  • 添加新的基于lxml的LinkExtractor以替换未维护的SgmlLinkExtractor (issue 559 , issue 761 , issue 763 )

  • 清理设置API-每个蜘蛛设置的一部分 GSoC project ( issue 737 )

  • 将utf8编码头添加到模板( issue 688 , issue 762 )

  • Telnet控制台现在默认绑定到127.0.0.1( issue 699 )

  • 更新Debian/Ubuntu安装说明 (issue 509 , issue 549 )

  • 禁用LXML XPath计算中的智能字符串( issue 535 )

  • 将基于文件系统的缓存还原为HTTP缓存中间件的默认缓存( issue 541 , issue 500 , issue 571 )

  • 将当前爬行器暴露在 Scrapy 壳中( issue 557 )

  • 改进测试套件,比较csv和xml导出器( issue 570 )

  • 新的 offsite/filteredoffsite/domains 统计数据(统计) issue 566 )

  • 在Crawlspiper中支持进程链接作为生成器( issue 555 )

  • DupeFilter的详细日志记录和新统计计数器( issue 553 )

  • 将mimetype参数添加到 MailSender.send() ( issue 602 )

  • 通用化文件管道日志消息( issue 622 )

  • 用sgmlinkextractor中的HTML实体替换不可编码的代码点( issue 565 )

  • 已将SEP文档转换为RST格式( issue 629 , issue 630 , issue 638 , issue 632 , issue 636 , issue 640 , issue 635 , issue 634 , issue 639 , issue 637 , issue 631 , issue 633 , issue 641 , issue 642 )

  • 用于表单请求中ClickData的nr索引的测试和文档( issue 646 , issue 645 )

  • 允许像禁用任何其他组件一样禁用下载程序处理程序( issue 650 )

  • 在重定向过多后放弃请求时记录( issue 654 )

  • 如果蜘蛛回调不处理错误响应,则记录错误响应( issue 612 , issue 656 )

  • 向HTTP压缩mw添加内容类型检查( issue 193 , issue 660 )

  • 使用来自ppa的最新pypi运行pypypy测试( issue 674 )

  • 使用pytest而不是trial运行测试套件( issue 679 )

  • 建立文档并检查毒物环境中的死链接( issue 687 )

  • 使scrappy.versionu info成为整数的元组( issue 681 , issue 692 )

  • 从文件扩展名推断导出程序的输出格式( issue 546 , issue 659 , issue 760 )

  • 在中支持不区分大小写的域 url_is_from_any_domain() ( issue 693 )

  • 删除项目和Spider模板中的PEP8警告( issue 698 )

  • 测试和文档 request_fingerprint 功能( issue 597 )

  • GSOC项目9月19日更新 per-spider settings ( issue 705 )

  • 合同失败时,将退出代码设置为非零( issue 727 )

  • 添加一个设置来控制实例化为下载程序组件的类 (issue 738 )

  • 传入响应 item_dropped 信号(信号) issue 724 )

  • 改进 scrapy check 合同指挥部( issue 733 , issue 752 )

  • 文件 spider.closed() 快捷方式(捷径” issue 719 )

  • 文件 request_scheduled 信号(信号) issue 746 )

  • 添加有关报告安全问题的说明( issue 697 )

  • 添加LevelDB HTTP缓存存储后端( issue 626 , issue 500 )

  • 排序蜘蛛列表输出 scrapy list 命令( issue 742 )

  • 多个文档增强和修复 (issue 575 , issue 587 , issue 590 , issue 596 , issue 610 , issue 617 , issue 618 , issue 627 , issue 613 , issue 643 , issue 654 , issue 675 , issue 663 , issue 711 , issue 714 )

错误修正¶

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

  • 忽略项加载器处理器中的无值( issue 556 )

  • 当sgmlinkxtractor和htmlparserlinkextractor中存在内部标记时修复链接文本( issue 485 , issue 574 )

  • 修复对已弃用类的子类的错误检查( issue 581 , issue 584 )

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

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

  • 修复类型()的动态项类示例用法( issue 603 )

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

  • 将sgmlinkextractor中attrs参数的默认值固定为tuple( issue 661 )

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

  • 修复引擎以支持筛选的启动请求( issue 707 )

  • 在没有主机名的URL上修复非现场中间件案例( issue 745 )

  • 测试套件不再需要PIL( issue 585 )

Scrapy 0.22.2(2014-02-14发布)¶

  • 修复对不存在的engine.slots的引用。关闭α593 commit 13c099a )

  • 下载ermw-doc-typo(spidermw-doc-copy-remark)( commit 8ae11bf )

  • 正确的拼写错误 commit 1346037 )

Scrapy 0.22.1(2014-02-08发布)¶

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

  • 测试检查。堆栈故障( commit cc3eda3 )

  • 当inspect.stack()失败时处理案例( commit 8cb44f9 )

  • 修复对已弃用类的子类的错误检查。关闭α581 commit 46d98d6 )

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

  • 修复htmlparserlinktextractor并在485合并后进行测试( commit 368a946 )

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

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

  • BaseSgmlLinkExtractor:修复了未知的_end tag(),以便在结束标记与开始标记匹配时只设置当前的_link=none( commit 7e4d627 )

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

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

  • Regexlinkextractor:创建链接时编码URL Unicode值( commit d0ee545 )

  • 用最新的输出更新了教程的爬行输出。( commit 8da65de )

  • 使用爬虫引用更新了shell文档,并修复了实际shell输出。( commit 875b9ab )

  • PEP8小编辑。( commit f89efaf )

  • 暴露当前爬虫在破烂的外壳。 (commit 5349cec )

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

  • 使用itemloader时忽略none的值。( commit 0632546 )

  • Doc修复了默认值中的httpcache_存储错误,该默认值现在是filesystem而不是dbm。( commit cde9a8c )

  • 将Ubuntu安装说明显示为文本代码 (commit fb5c9c5 )

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

  • 合并请求550来自Missist Leone/Patch-1( commit 6f70b6a )

  • 修改scray 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

  • 使用connect方法的代理服务器https://urls( issue 392 , issue 397 )

  • 添加一个中间件来对由Google定义的Ajax可爬行页面进行爬行。( issue 343 )

  • 将scrapy.spider.basespider重命名为scrapy.spider.spider( issue 510 , issue 519 )

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

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

  • 制作 RFPDupeFilter 类容易子类化( issue 533 )

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

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

  • 支持部分 get_func_args 乌蒂尔 issue 506 ,问题:“504”

  • 允许通过毒物进行单独测试 (issue 503 )

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

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

  • 改进非现场中间件测试( issue 478 )

  • 添加一种跳过由refermiddleware设置的默认referer头的方法( issue 475 )

  • 请勿发送 x-gzip 默认情况下 Accept-Encoding 报头( issue 469 )

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

  • 使用现代的python习惯用法,无论你在哪里找到遗产( issue 497 )

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

修正¶

  • 更新Crawlspiper模板中的选择器类导入( issue 484 )

  • 修复不存在的引用 engine.slots ( issue 464 )

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

  • 在XpathitemLoader子类化时发出警告,以前它只在实例化时发出警告。( issue 523 )

  • 在XpathSelector子类化时发出警告,以前它只在实例化时发出警告。( issue 537 )

  • 对内存状态的多个修复( issue 531 , issue 530 , issue 529 )

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

  • 在PIP 1.5下修复测试运行程序( issue 513 )

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

增强功能¶

  • [向后不兼容]将httpcachemiddleware后端切换到文件系统( issue 541 )还原旧的后端集 HTTPCACHE_STORAGEscrapy.contrib.httpcache.DbmCacheStorage

  • 使用connect方法的代理服务器https://urls( issue 392 , issue 397 )

  • 添加一个中间件来对由Google定义的Ajax可爬行页面进行爬行。( issue 343 )

  • 将scrapy.spider.basespider重命名为scrapy.spider.spider( issue 510 , issue 519 )

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

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

  • 制作 RFPDupeFilter 类容易子类化( issue 533 )

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

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

  • 支持部分 get_func_args 乌蒂尔 issue 506 ,问题:“504”

  • 允许通过毒物进行单独测试 (issue 503 )

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

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

  • 改进非现场中间件测试( issue 478 )

  • 添加一种跳过由refermiddleware设置的默认referer头的方法( issue 475 )

  • 请勿发送 x-gzip 默认情况下 Accept-Encoding 报头( issue 469 )

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

  • 使用现代的python习惯用法,无论你在哪里找到遗产( issue 497 )

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

修正¶

  • 更新Crawlspiper模板中的选择器类导入( issue 484 )

  • 修复不存在的引用 engine.slots ( issue 464 )

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

  • 在XpathitemLoader子类化时发出警告,以前它只在实例化时发出警告。( issue 523 )

  • 在XpathSelector子类化时发出警告,以前它只在实例化时发出警告。( issue 537 )

  • 对内存状态的多个修复( issue 531 , issue 530 , issue 529 )

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

  • 在PIP 1.5下修复测试运行程序( issue 513 )

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

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

  • 使用选择器更改更新Crawlspiper模板( commit 6d1457d )

  • 在教程中修复方法名。关闭GH-480(GH-480) commit b4fc359

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

  • 包含u软件包u从发布的源代码构建车轮需要数据( commit 5ba1ad5 )

  • 进程并行正在泄漏内部延迟的故障。关闭α458 commit 419a780 )

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

增强功能¶

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

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

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

  • SitemapSpider可以获取备用URL( issue 360 )

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

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

  • 使用具有嵌套支持的本机python类型的新项导出器( issue 366 )

  • 调整http1.1池大小,使其与设置定义的并发性匹配( commit b43b5f575 )

  • scrappy.mail.mailsender现在可以通过tls连接或使用starttls升级( issue 327 )

  • 从ImageSpipeline中分解出功能的新文件管道( issue 370 , issue 409 )

  • 建议用枕头代替PIL来处理图像( issue 317 )

  • 为Ubuntu Quantal和Raring添加了Debian包 (commit 86230c0 )

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

  • 从多个核心组件上拆下多个十字轴支架( issue 422 , issue 421 , issue 420 , issue 419 , issue 423 , issue 418 )

  • Travis CI现在根据开发版本测试 Scrapy 更改 w3libqueuelib python包。

  • 将PYPY 2.1添加到持续集成测试中( commit ecfa7431 )

  • Pylinted、pep8并从源中删除了旧样式异常( issue 430 , issue 432 )

  • 将importlib用于参数导入( issue 445 )

  • 处理python 2.7.5中引入的影响xmlItemExporter的回归( issue 372 )

  • 修正了SIGINT上的爬行关闭( issue 450 )

  • 不提交 reset 在FormRequest.From响应中键入输入( commit b326b87 )

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

错误修正¶

  • 在Django 1.6下修复测试( commit b6bed44c )

  • 使用HTTP1.1下载处理程序在断开连接的情况下重试中间件的许多错误修复

  • 修复Twisted版本之间的不一致(:issue:406

  • 修复破烂的外壳缺陷 (issue 418 , issue 407 )

  • 修复setup.py中的无效变量名( issue 429 )

  • 修复教程引用( issue 387 )

  • 改进请求响应文档( issue 391 )

  • 改进最佳实践文档( issue 399 , issue 400 , issue 401 , issue 402 )

  • 改进Django集成文档( issue 404 )

  • 文件 bindaddress 请求元 commit 37c24e01d7 )

  • 改进 Request 类文档( issue 226 )

其他¶

  • 删除Python 2.6支持(:issue:448

  • 添加 cssselect python包作为安装依赖项

  • 删除libxml2和多选择器的后端支持, lxml 从现在开始是必需的。

  • 最小扭曲版本增加到10.0.0,下降扭曲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@...>

增强功能¶

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

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

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

  • SitemapSpider可以获取备用URL( issue 360 )

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

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

  • 使用具有嵌套支持的本机python类型的新项导出器( issue 366 )

  • 调整http1.1池大小,使其与设置定义的并发性匹配( commit b43b5f575 )

  • scrappy.mail.mailsender现在可以通过tls连接或使用starttls升级( issue 327 )

  • 从ImageSpipeline中分解出功能的新文件管道( issue 370 , issue 409 )

  • 建议用枕头代替PIL来处理图像( issue 317 )

  • 为Ubuntu Quantal和Raring添加了Debian包 (commit 86230c0 )

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

  • 从多个核心组件上拆下多个十字轴支架( issue 422 , issue 421 , issue 420 , issue 419 , issue 423 , issue 418 )

  • Travis CI现在根据开发版本测试 Scrapy 更改 w3libqueuelib python包。

  • 将PYPY 2.1添加到持续集成测试中( commit ecfa7431 )

  • Pylinted、pep8并从源中删除了旧样式异常( issue 430 , issue 432 )

  • 将importlib用于参数导入( issue 445 )

  • 处理python 2.7.5中引入的影响xmlItemExporter的回归( issue 372 )

  • 修正了SIGINT上的爬行关闭( issue 450 )

  • 不提交 reset 在FormRequest.From响应中键入输入( commit b326b87 )

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

错误修正¶

  • 在Django 1.6下修复测试( commit b6bed44c )

  • 使用HTTP1.1下载处理程序在断开连接的情况下重试中间件的许多错误修复

  • 修复Twisted版本之间的不一致(:issue:406

  • 修复破烂的外壳缺陷 (issue 418 , issue 407 )

  • 修复setup.py中的无效变量名( issue 429 )

  • 修复教程引用( issue 387 )

  • 改进请求响应文档( issue 391 )

  • 改进最佳实践文档( issue 399 , issue 400 , issue 401 , issue 402 )

  • 改进Django集成文档( issue 404 )

  • 文件 bindaddress 请求元 commit 37c24e01d7 )

  • 改进 Request 类文档( issue 226 )

其他¶

  • 删除Python 2.6支持(:issue:448

  • 添加 cssselect python包作为安装依赖项

  • 删除libxml2和多选择器的后端支持, lxml 从现在开始是必需的。

  • 最小扭曲版本增加到10.0.0,下降扭曲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拒绝更新命名空间。FixY 396 commit 3d32c4f )

  • 修复alreadycallederror替换shell命令中的请求。关闭α407 commit b1d8919 )

  • 修复启动请求延迟和提前挂起( commit 89faf52 )

Scrapy 0.18.3(2013-10-03发布)¶

  • 修复对启动请求的延迟评估的回归( commit 12693a5 )

  • 表单:不提交重置输入( commit e429f63 )

  • 增加UnitTest超时以减少Travis假阳性故障( commit 912202e )

  • json导出器的后台主修复程序( commit cfc2d46 )

  • 在生成sdist tarball之前,修复权限并设置umask( commit 06149e0 )

Scrapy 0.18.2(2013-09-03发布)¶

  • 后端 scrapy check 命令修复和向后兼容的多爬虫进程( issue 339 )

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

  • 删除由cherry-picked更改添加的额外导入( commit d20304e )

  • 在twisted pre 11.0.0下修复爬行测试( commit 1994f38 )

  • pY26不能格式化零长度字段( commit abf756f )

  • 测试未绑定响应的潜在数据丢失错误( commit b15470d )

  • 将没有内容长度或传输编码的响应视为良好响应( commit c4bf324 )

  • 如果未启用http11处理程序,则不包括responsefailed( commit 6cbe684 )

  • 新的HTTP客户端在ResponseFiled异常中包装连接丢失。修复373 (commit 1a20bba )

  • 限制Travis CI构建矩阵( commit 3b01bb8 )

  • 合并请求375来自Peterarenot/Patch-1( commit fa766d7 )

  • 已修复,因此它引用了正确的文件夹( commit 3283809 )

  • 添加了Quantal&Raring来支持Ubuntu版本 (commit 1411923 )

  • 修复在升级到http1客户端后没有重试某些连接错误的重试中间件,关闭GH-373( commit bb35ed0 )

  • 在python 2.7.4和2.7.5中修复xmlItemExporter( commit de3e451 )

  • 0.18发行说明的小更新( commit c45e5f1 )

  • 修正贡献者列表格式 (commit 0b60031 )

Scrapy 0.18.0(2013-08-09发布)¶

  • 使用tox对testsuite运行进行了很多改进,包括在pypi上进行测试的方法

  • 处理Ajax可爬行URL的get参数( commit 3fe2a32 )

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

  • 错误修复cookie按主机名而不是按netloc合并( issue 352 )

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

  • 使用支持XML命名空间 iternodes 语法分析器 XMLFeedSpider ( issue 12 )

  • 支持 dont_cache 请求元标志( issue 19 )

  • 修正错误 scrapy.utils.gz.gunzip 被python 2.7.4中的更改打断( commit 4dc76e )

  • 错误修复上的URL编码 SgmlLinkExtractor ( issue 24 )

  • 修正错误 TakeFirst 处理器不应丢弃零(0)值( issue 59 )

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

  • 提高cookie处理性能( issue 77 )

  • 记录重复筛选的请求一次( issue 105 )

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

  • 使用http1.1作为默认的下载程序处理程序( issue 109 和 issue 318 )

  • 支持上的XPath表单选择 FormRequest.from_response ( issue 185 )

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

  • Pypi解释器上的错误修复信号调度( issue 205 )

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

  • 将rfc2616缓存策略添加到 HttpCacheMiddleware ( issue 212 )

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

  • 多方面的改进 DjangoItem ( issue 217 , issue 218 , issue 221 )

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

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

  • 支持 settings.getdict ( issue 269 )

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

  • 补充 Item.copy ( issue 290 )

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

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

  • 添加了Downloader Benchmark Web服务器和Spider工具 标杆管理

  • 已将永久(磁盘上)队列移动到单独的项目 (queuelib) 现在要看哪一个了

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

  • 补充 --pdb 选择权 scrapy 命令行工具

  • 补充 XPathSelector.remove_namespaces 它允许从XML文档中删除所有名称空间以方便(使用不含名称空间的xpaths)。记录在 选择器 .

  • 蜘蛛合约的几个改进

  • 名为metarefreshmiddldeware的新默认中间件,用于处理meta refresh html标记重定向,

  • MetaRefreshMiddlDeware和RedirectMiddleware有不同的优先级来解决62

  • 从爬虫方法添加到蜘蛛

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

  • macOS兼容性的更多改进(感谢Alex Cepoi)

  • 多个单件清洁和多蜘蛛支持(感谢Nicolas Ramirez)

  • 支持自定义下载插槽

  • 在“shell”命令中添加了--spider选项。

  • 当scray启动时记录重写的设置

感谢所有为这次发布做出贡献的人。以下是按提交次数排序的参与者列表:

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 )

  • 修复不准确的下载器中间件文档。参考文献280 commit 40667cb )

  • 文档:删除diveintopython.org的链接,该链接不再可用。关闭α246 commit bd58bfa )

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

  • 修正了错误的标签属性类型bool而不是list( commit a274276 )

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

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

  • 添加关于禁用扩展的文档。参考文献132 commit c90de33 )

  • 已修复错误消息格式。log.err()不支持酷格式,出现错误时,消息为:“错误:错误处理%(item)s”( commit c16150c )

  • 整理和改进图像管道错误记录( commit 56b45fc )

  • 固定文档错误( commit 243be84 )

  • 添加文档主题:广泛的爬网和常见做法 (commit 1fbb715 )

  • 修复Scrapy parse命令中未显式指定spider时的错误。关闭#209 (commit c72e682 )

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

Scrapy 0.16.3(2012-12-07发布)¶

  • 在使用下载延迟时删除并发限制,并仍然确保强制执行请求间延迟( commit 487b9b5 )

  • 当图像管道失败时添加错误详细信息( commit 8232569 )

  • 提高macOS兼容性 (commit 8dcf8aa )

  • setup.py:使用readme.rst填充long_描述( commit 7b5310d )

  • 文档:删除了对ClientForm的过时引用( commit 80f9bb6 )

  • 为默认存储后端更正文档( commit 2aa491b )

  • 文档:从常见问题解答中删除了断开的proxyhub链接( commit bdf61c4 )

  • SpiderOpenCloseLogging示例中的固定文档拼写错误( commit 7184094 )

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

  • 废合同:python2.6compat (commit a4a9199 )

  • 废合同详细选项 (commit ec41673 )

  • 废合同的正确的类unittest输出 (commit 86635e4 )

  • 在调试文档中添加了“在浏览器中打开”( commit c9b690d )

  • 从设置文档中删除对全局碎片统计的引用 (commit dd55067 )

  • 修复Windows平台中的spiderstate错误( commit 58998f4 )

Scrapy 0.16.1(2012-10-26发布)¶

  • 修复了logstats扩展,它在0.16版本之前的错误合并后被破坏。( commit 8c780fd )

  • 更好地向后兼容scrapy.conf.settings( commit 3403089 )

  • 有关如何从扩展访问爬虫统计信息的扩展文档( commit c4da0b5 )

  • 删除了.hgtag(由于Scrapy使用git,不再需要) (commit d52c188 )

  • 固定RST标题下的破折号( commit fa4f7f9 )

  • 在新闻中设置0.16.0的发布日期( commit e292246 )

Scrapy 0.16.0(2012-10-18发布)¶

零星变化:

  • 补充 蜘蛛合约 以正式/可复制的方式测试蜘蛛的机制

  • 增加选项 -o-trunspider 命令

  • 文件化的 AutoThrottle 扩展 并添加到默认安装的扩展。您仍然需要启用它 AUTOTHROTTLE_ENABLED

  • 主要统计数据收集重构:删除全局/每个蜘蛛统计数据的分离,删除与统计数据相关的信号( stats_spider_opened 等)。统计信息现在要简单得多,在统计信息收集器API和信号上保持向后兼容性。

  • 补充 process_start_requests() 蜘蛛中间商的方法

  • 信号掉了。现在应该可以通过爬虫信号属性。有关更多信息,请参阅信号文档。

  • 删除了统计收集器singleton。现在可以通过crawler.stats属性访问状态。有关详细信息,请参阅统计信息收集文档。

  • 文件化的 核心API

  • lxml is now the default selectors backend instead of libxml2

  • 将formRequest.from_response()移植到 lxml 而不是 ClientForm

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

  • SiteMapSpider:添加了对以.xml和.xml.gz结尾的站点地图URL的支持,即使它们公布了错误的内容类型( commit 10ed28b )

  • Stacktracedump扩展:同时转储trackref活动引用( commit fe2ce93 )

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

  • 补充 cookiejar 请求meta-key以支持每个spider的多个cookie会话

  • 去耦编码检测码 w3lib.encoding 并移植了一些垃圾代码以使用该模块

  • 放弃了对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)

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

  • 根据蜘蛛设置删除(替换为实例化多个爬行器对象)

  • USER_AGENT 蜘蛛属性将不再工作,请使用 user_agent 改为属性

  • DOWNLOAD_TIMEOUT 蜘蛛属性将不再工作,请使用 download_timeout 改为属性

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

  • 升级:ref:`topics-djangoitem`到main contrib

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

  • 下载程序处理程序 (DOWNLOAD_HANDLERS 设置)现在接收设置作为 __init__ 方法

  • 已将内存使用率替换为(更便携) resource 移除模块 scrapy.utils.memory 模块

  • 删除信号: scrapy.mail.mail_sent

  • 删除``TRACK_REFS``设置,现在:ref:`trackrefs <topics-leaks-trackrefs>`总是被启用

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

  • 日志消息的数量(每个级别)现在通过 Scrapy 统计(stat name: log_count/LEVEL

  • 接收到的响应数现在通过scrapy stats(stat name: response_received_count

  • 删除了``scrapy.log.started``属性

Scrapy 0.14.4¶

  • 为支持的Ubuntu发行版添加了precise (commit b7e46df )

  • 修复了在https://groups.google.com/forum/中报告的json-rpc-webservice中的错误!主题/垃圾用户/QGVBMFYBNAQ/讨论。也从extras/scrapy-ws.py中删除了不再支持的“run”命令( commit 340fbdb )

  • 内容类型http equiv的元标记属性可以是任意顺序。(123) commit 0cb68af )

  • 将“导入图像”替换为更标准的“从PIL导入图像”。关闭α88 commit 4d17048 )

  • 将试用状态返回为bin/runtests.sh exit值。(118) commit b7b2e7f )

Scrapy 0.14.3¶

  • 忘记包含PyDispatch许可证。(118) commit fd85f9c )

  • 包括testsuite在源分发中使用的egg文件。(118) commit c897793 )

  • 更新项目模板中的docstring以避免与genspider命令混淆,这可能被视为高级功能。参考文献107 commit 2548dcc )

  • 在docs/topics/firebug.rst中添加了关于关闭google目录的注释( commit 668e352 )

  • 空的时候不要丢弃插槽,只需保存在另一个dict中,以便在需要时循环使用。 (commit 8e9f607 )

  • 在支持libxml2的选择器中处理unicode xpaths不会失败( commit b830e95 )

  • 修正了请求对象文档中的小错误( commit bf3c9ee )

  • 修复了链接提取器文档中的次要缺陷( commit ba14f38 )

  • 在scray中删除了一些与sqlite支持相关的过时代码 (commit 0665175 )

Scrapy 0.14.2¶

  • 在计算校验和之前,移动指向文件开头的缓冲区。参考文献92 commit 6a5bef2 )

  • 在保存图像之前计算图像校验和。关闭α92 commit 9817df1 )

  • 删除缓存失败中的泄漏引用( commit 673a120 )

  • 修正了memoryusage扩展中的错误:get_engine_status()只接受1个参数(给定0)( commit 11133e9 )

  • 修复了HTTP压缩中间件上的struct.error。关闭α87 commit 1423140 )

  • ajax爬网没有扩展Unicode URL( commit 0de3fb4 )

  • Catch start_请求迭代器错误。参考文献83 commit 454a21d )

  • 加速libxml2 xpathselector( commit 2fbd662 )

  • 根据最近的更改更新版本文档( commit 0a070f5 )

  • scrapyd:修复文档链接( commit 2b4e4c3 )

  • extras/makedeb.py:不再从git获取版本( commit caffe0e )

Scrapy 0.14.1¶

  • extras/makedeb.py:不再从git获取版本( commit caffe0e )

  • 缓冲版本为0.14.1( commit 6cb9e1c )

  • 修复了对教程目录的引用( commit 4b86bd6 )

  • 文档:从request.replace()中删除了重复的回调参数( commit 1aeccdd )

  • 修复了scrapyd doc(:commit:8bf19e6)的格式

  • 为所有正在运行的线程转储堆栈并修复StackTraceDump扩展转储的引擎状态( commit 14a8e6e )

  • 添加了关于为什么我们在boto图像上传上禁用SSL的注释( commit 5223575 )

  • 当与S3进行太多并行连接时,SSL握手挂起( commit 63d583d )

  • 更改教程以跟踪dmoz网站上的更改( commit bcb3198 )

  • 避免在Twisted中出现断开连接的deferred attributeerror异常>=11.1.0( commit 98f3f87 )

  • 允许spider设置autothrottle最大并发性( commit 175a4b5 )

Scrapy 0.14¶

新功能和设置¶

  • 支持 AJAX crawleable urls

  • 在磁盘上存储请求的新的永久性计划程序,允许挂起和恢复爬网( r2737 )

  • 在``scrapy crawl``中添加了``-o``选项,这是将已删除项目转储到文件中的快捷方式(或使用``-``标准输出)

  • 添加了对自定义设置传递给Scrapyd``recation.json`` api(:rev:2779,:rev:2783)的支持

  • 新的 ChunkedTransferMiddleware (默认启用)以支持 chunked transfer encoding (r2769)

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

  • 补充 marshal to formats supported by feed exports (r2744)

  • 在请求错误回复中,有问题的请求现在接收到 failure.request 属性(属性) r2738 )

  • 大下载重构以支持每个域/IP并发限制( r2732 )
    • CONCURRENT_REQUESTS_PER_SPIDER 设置已被弃用,并替换为:
      • CONCURRENT_REQUESTS, CONCURRENT_REQUESTS_PER_DOMAIN, CONCURRENT_REQUESTS_PER_IP

    • 查看文档了解更多详细信息

  • 添加了内置缓存DNS解析程序( r2728 )

  • 将与Amazon AWS相关的组件/扩展(sqs spider queue,simpledb stats collector)移动到单独的项目:[scaws](https://github.com/scrapinghub/scaws)( r2706 , r2714 )

  • 已将spider队列移动到scrapyd: scrapy.spiderqueue > scrapyd.spiderqueue ( r2708 )

  • 已将sqlite utils移动到scrapyd: scrapy.utils.sqlite > scrapyd.sqlite ( r2781 )

  • 对返回迭代器的真正支持 start_requests() 方法。当蜘蛛空闲时,迭代器现在在爬行过程中被消耗。( r2704 )

  • 补充 REDIRECT_ENABLED 快速启用/禁用重定向中间件的设置( r2697 )

  • 补充 RETRY_ENABLED 设置为快速启用/禁用重试中间件( r2694 )

  • 补充 CloseSpider 手动关闭星形齿轮的例外情况( r2691 )

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

  • 重构CloseSpider行为,等待所有下载完成并由Spider处理,然后关闭Spider( r2688 )

  • 补充 SitemapSpider (见Spiders页面中的文档)( r2658 )

  • 补充 LogStats 用于定期记录基本统计信息(如已爬网页和已擦除项)的扩展( r2657 )

  • 使gzipped响应的处理更加可靠(319, r2643 )现在,scrappy将尝试尽可能多地从gzip响应中解压缩,而不是使用 IOError .

  • 简化!memoryDebugger扩展,用于转储内存调试信息( r2639 )

  • 添加了编辑蜘蛛的新命令:scrapy edit``(:rev:`2636`)和-e``标志到``genspider``命令使用它(:rev:2653

  • 将项目的默认表示更改为精美打印的dicts。(启:2631)。 对于Scraped和Dropped行,在默认情况下使日志更具可读性,从而改进了默认日志记录。

  • 补充 spider_error 信号(信号) r2628 )

  • 补充:设置:COOKIES_ENABLED`设置(:rev:`2625

  • 现在,Stats被转储到Scrapy日志中(默认值:setting:`STATS_DUMP`设置已更改为“True”。)。 这是为了让Scrapy用户更加了解Scrapy统计数据以及在那里收集的数据。

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

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

  • 补充 listjobs.json API到ScrapyDy( r2571 )

  • CsvItemExporter:添加了``join_multivalued``参数(:rev:2578

  • 为``xmliter_lxml``添加名称空间支持(:rev:2552

  • 改进了cookies中间件 COOKIES_DEBUG 更好的记录它( r2579 )

  • 对Scrapyd和Link提取器的一些改进

重新排列和删除代码¶

  • 合并的项传递和项抓取概念,因为它们在过去常常被证明是混淆的。这意味着: r2630 )
    • 原始item_scraped信号已被删除

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

    • 旧的日志行``Scraped Item ...``被删除了

    • 旧的日志行``通过的项目......``被重命名为``Scraped Item ...``行并降级为``DEBUG``级别

  • 通过将部分废弃代码分为两个新库来减少废弃代码库:
    • w3lib`_(来自``scrapy.utils。{http,markup,multipart,response,url}``的几个函数,完成于:rev:`2584

    • scrapely`_(是``scrapy.contrib.ibl`,完成于:rev:2586

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

  • 已从中删除googledir项目 examples/googledir . 现在有一个新的示例项目叫做 dirbot 在GitHub上提供:https://github.com/scray/dirbot

  • 删除了对Scrapy项目中默认字段值的支持(:rev:2616

  • 删除了实验crawlspider v2(:rev:2632

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

  • 已删除对将URL传递到的支持 scrapy crawl 命令(使用) scrapy parse 取而代之的是) r2704 )

  • 已删除不推荐使用的执行队列( r2704 )

  • 已删除(未记录)spider上下文扩展(来自scrapy.contrib.spiderContext)( r2780 )

  • 删除``CONCURRENT_SPIDERS``设置(改用scrapyd maxproc)(:rev:2789

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

  • 将设置``CLOSESPIDER_ITEMPASSED``重命名为:setting:CLOSESPIDER_ITEMCOUNT`(:rev:`2655)。 保持向后兼容性。

新功能和设置¶

  • 支持 AJAX crawleable urls

  • 在磁盘上存储请求的新的永久性计划程序,允许挂起和恢复爬网( r2737 )

  • 在``scrapy crawl``中添加了``-o``选项,这是将已删除项目转储到文件中的快捷方式(或使用``-``标准输出)

  • 添加了对自定义设置传递给Scrapyd``recation.json`` api(:rev:2779,:rev:2783)的支持

  • 新的 ChunkedTransferMiddleware (默认启用)以支持 chunked transfer encoding (r2769)

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

  • 补充 marshal to formats supported by feed exports (r2744)

  • 在请求错误回复中,有问题的请求现在接收到 failure.request 属性(属性) r2738 )

  • 大下载重构以支持每个域/IP并发限制( r2732 )
    • CONCURRENT_REQUESTS_PER_SPIDER 设置已被弃用,并替换为:
      • CONCURRENT_REQUESTS, CONCURRENT_REQUESTS_PER_DOMAIN, CONCURRENT_REQUESTS_PER_IP

    • 查看文档了解更多详细信息

  • 添加了内置缓存DNS解析程序( r2728 )

  • 将与Amazon AWS相关的组件/扩展(sqs spider queue,simpledb stats collector)移动到单独的项目:[scaws](https://github.com/scrapinghub/scaws)( r2706 , r2714 )

  • 已将spider队列移动到scrapyd: scrapy.spiderqueue > scrapyd.spiderqueue ( r2708 )

  • 已将sqlite utils移动到scrapyd: scrapy.utils.sqlite > scrapyd.sqlite ( r2781 )

  • 对返回迭代器的真正支持 start_requests() 方法。当蜘蛛空闲时,迭代器现在在爬行过程中被消耗。( r2704 )

  • 补充 REDIRECT_ENABLED 快速启用/禁用重定向中间件的设置( r2697 )

  • 补充 RETRY_ENABLED 设置为快速启用/禁用重试中间件( r2694 )

  • 补充 CloseSpider 手动关闭星形齿轮的例外情况( r2691 )

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

  • 重构CloseSpider行为,等待所有下载完成并由Spider处理,然后关闭Spider( r2688 )

  • 补充 SitemapSpider (见Spiders页面中的文档)( r2658 )

  • 补充 LogStats 用于定期记录基本统计信息(如已爬网页和已擦除项)的扩展( r2657 )

  • 使gzipped响应的处理更加可靠(319, r2643 )现在,scrappy将尝试尽可能多地从gzip响应中解压缩,而不是使用 IOError .

  • 简化!memoryDebugger扩展,用于转储内存调试信息( r2639 )

  • 添加了编辑蜘蛛的新命令:scrapy edit``(:rev:`2636`)和-e``标志到``genspider``命令使用它(:rev:2653

  • 将项目的默认表示更改为精美打印的dicts。(启:2631)。 对于Scraped和Dropped行,在默认情况下使日志更具可读性,从而改进了默认日志记录。

  • 补充 spider_error 信号(信号) r2628 )

  • 补充:设置:COOKIES_ENABLED`设置(:rev:`2625

  • 现在,Stats被转储到Scrapy日志中(默认值:setting:`STATS_DUMP`设置已更改为“True”。)。 这是为了让Scrapy用户更加了解Scrapy统计数据以及在那里收集的数据。

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

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

  • 补充 listjobs.json API到ScrapyDy( r2571 )

  • CsvItemExporter:添加了``join_multivalued``参数(:rev:2578

  • 为``xmliter_lxml``添加名称空间支持(:rev:2552

  • 改进了cookies中间件 COOKIES_DEBUG 更好的记录它( r2579 )

  • 对Scrapyd和Link提取器的一些改进

重新排列和删除代码¶

  • 合并的项传递和项抓取概念,因为它们在过去常常被证明是混淆的。这意味着: r2630 )
    • 原始item_scraped信号已被删除

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

    • 旧的日志行``Scraped Item ...``被删除了

    • 旧的日志行``通过的项目......``被重命名为``Scraped Item ...``行并降级为``DEBUG``级别

  • 通过将部分废弃代码分为两个新库来减少废弃代码库:
    • w3lib`_(来自``scrapy.utils。{http,markup,multipart,response,url}``的几个函数,完成于:rev:`2584

    • scrapely`_(是``scrapy.contrib.ibl`,完成于:rev:2586

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

  • 已从中删除googledir项目 examples/googledir . 现在有一个新的示例项目叫做 dirbot 在GitHub上提供:https://github.com/scray/dirbot

  • 删除了对Scrapy项目中默认字段值的支持(:rev:2616

  • 删除了实验crawlspider v2(:rev:2632

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

  • 已删除对将URL传递到的支持 scrapy crawl 命令(使用) scrapy parse 取而代之的是) r2704 )

  • 已删除不推荐使用的执行队列( r2704 )

  • 已删除(未记录)spider上下文扩展(来自scrapy.contrib.spiderContext)( r2780 )

  • 删除``CONCURRENT_SPIDERS``设置(改用scrapyd maxproc)(:rev:2789

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

  • 将设置``CLOSESPIDER_ITEMPASSED``重命名为:setting:CLOSESPIDER_ITEMCOUNT`(:rev:`2655)。 保持向后兼容性。

Scrapy 0.12¶

旧问题追踪器(trac)中的nnn参考票等数字不再可用。

新功能和改进¶

  • 传递的项现在发送到 item 论证 item_passed (273)

  • 向添加了详细选项 scrapy version 命令,用于错误报告(298)

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

  • 增加了项目数据存储目录(276,277)

  • Scrapy 项目的文档结构(见命令行工具文档)

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

  • 每个蜘蛛设置(245)

  • 支持退出代码,以在scrapy命令中发出错误信号(248)

  • 补充 -c 参数 scrapy shell 命令

  • 制造 libxml2 可选择的(第260)

  • 新的 deploy 命令(第261)

  • 补充 CLOSESPIDER_PAGECOUNT 设置(α253)

  • 补充 CLOSESPIDER_ERRORCOUNT 设置(α254)

抓取变化¶

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

  • 它为每个蜘蛛运行存储一个日志文件,并将其旋转以保持每个蜘蛛最新的5个日志(默认情况下)

  • 添加了一个最小的Web UI,默认情况下可从http://localhost:6800获得

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

对设置的更改¶

  • 补充 HTTPCACHE_ENABLED 设置(默认为false)以启用HTTP缓存中间件

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

弃用/废弃功能¶

  • 已弃用 runserver 有利于…的命令 server 启动ScrapyD服务器的命令。另请参见:ScrapyD更改

  • 已弃用 queue 有利于使用ScrapyD的命令 schedule.json 应用程序编程接口。另请参见:ScrapyD更改

  • 移除了!lxmlitemloader(从未升级到主控件的实验控件)

新功能和改进¶

  • 传递的项现在发送到 item 论证 item_passed (273)

  • 向添加了详细选项 scrapy version 命令,用于错误报告(298)

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

  • 增加了项目数据存储目录(276,277)

  • Scrapy 项目的文档结构(见命令行工具文档)

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

  • 每个蜘蛛设置(245)

  • 支持退出代码,以在scrapy命令中发出错误信号(248)

  • 补充 -c 参数 scrapy shell 命令

  • 制造 libxml2 可选择的(第260)

  • 新的 deploy 命令(第261)

  • 补充 CLOSESPIDER_PAGECOUNT 设置(α253)

  • 补充 CLOSESPIDER_ERRORCOUNT 设置(α254)

抓取变化¶

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

  • 它为每个蜘蛛运行存储一个日志文件,并将其旋转以保持每个蜘蛛最新的5个日志(默认情况下)

  • 添加了一个最小的Web UI,默认情况下可从http://localhost:6800获得

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

对设置的更改¶

  • 补充 HTTPCACHE_ENABLED 设置(默认为false)以启用HTTP缓存中间件

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

弃用/废弃功能¶

  • 已弃用 runserver 有利于…的命令 server 启动ScrapyD服务器的命令。另请参见:ScrapyD更改

  • 已弃用 queue 有利于使用ScrapyD的命令 schedule.json 应用程序编程接口。另请参见:ScrapyD更改

  • 移除了!lxmlitemloader(从未升级到主控件的实验控件)

Scrapy 0.10¶

旧问题追踪器(trac)中的nnn参考票等数字不再可用。

新功能和改进¶

  • 新的Scrapy服务称为``scrapyd``,用于在生产中部署Scrapy爬虫(#218)(可用文档)

  • 简化的图像管道使用,现在无需对自己的图像管道进行子类化(217)

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

  • 重构公共基本代码中的执行队列和称为“spider队列”的可插拔后端(220)

  • 新的持久蜘蛛队列(基于sqlite)(198),默认情况下可用,允许在服务器模式下启动scrappy,然后安排蜘蛛运行。

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

  • 具有可插拔后端的Feed exporters(197)(提供文档)

  • 延迟信号(193)

  • 向item pipeline open_spider()添加了两个新方法,使用延迟支持关闭_spider()(195)

  • 支持覆盖每个spider的默认请求头(181)

  • 将默认的spider管理器替换为具有类似功能但不依赖于双绞线插件的管理器(186)

  • 将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完成添加到命令行工具(210)

  • 重命名命令 startrunserver (209)

API更改¶

  • urlbody 请求对象的属性现在是只读的(230)

  • Request.copy()Request.replace() 现在也复制他们的 callbackerrback 属性(231)

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

  • 非现场Middelware不会过滤掉来自没有允许域属性的spider的任何请求(225)

  • 删除蜘蛛管理器 load() 方法。现在蜘蛛被装载在 __init__ 方法本身。

  • 对Scrapy Manager(现在称为“crawler”)的更改:
    • scrapy.core.manager.ScrapyManager class renamed to scrapy.crawler.Crawler

    • scrapy.core.manager.scrapymanager singleton moved to scrapy.project.crawler

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

  • 蜘蛛管理器单例从``scrapy.spider.spiders``移动到``scrapy.project.crawler``单例的``spiders`属性。

  • 已移动的统计信息收集器类:(204)
    • scrapy.stats.collector.StatsCollector to scrapy.statscol.StatsCollector

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

  • 默认的每个命令设置现在在 default_settings 命令对象类的属性(201)

  • 已更改项管道的参数 proce将Item管道``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和Item Pipeline 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服务称为``scrapyd``,用于在生产中部署Scrapy爬虫(#218)(可用文档)

  • 简化的图像管道使用,现在无需对自己的图像管道进行子类化(217)

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

  • 重构公共基本代码中的执行队列和称为“spider队列”的可插拔后端(220)

  • 新的持久蜘蛛队列(基于sqlite)(198),默认情况下可用,允许在服务器模式下启动scrappy,然后安排蜘蛛运行。

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

  • 具有可插拔后端的Feed exporters(197)(提供文档)

  • 延迟信号(193)

  • 向item pipeline open_spider()添加了两个新方法,使用延迟支持关闭_spider()(195)

  • 支持覆盖每个spider的默认请求头(181)

  • 将默认的spider管理器替换为具有类似功能但不依赖于双绞线插件的管理器(186)

  • 将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完成添加到命令行工具(210)

  • 重命名命令 startrunserver (209)

API更改¶

  • urlbody 请求对象的属性现在是只读的(230)

  • Request.copy()Request.replace() 现在也复制他们的 callbackerrback 属性(231)

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

  • 非现场Middelware不会过滤掉来自没有允许域属性的spider的任何请求(225)

  • 删除蜘蛛管理器 load() 方法。现在蜘蛛被装载在 __init__ 方法本身。

  • 对Scrapy Manager(现在称为“crawler”)的更改:
    • scrapy.core.manager.ScrapyManager class renamed to scrapy.crawler.Crawler

    • scrapy.core.manager.scrapymanager singleton moved to scrapy.project.crawler

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

  • 蜘蛛管理器单例从``scrapy.spider.spiders``移动到``scrapy.project.crawler``单例的``spiders`属性。

  • 已移动的统计信息收集器类:(204)
    • scrapy.stats.collector.StatsCollector to scrapy.statscol.StatsCollector

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

  • 默认的每个命令设置现在在 default_settings 命令对象类的属性(201)

  • 已更改项管道的参数 proce将Item管道``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和Item Pipeline 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参考票等数字不再可用。

新功能和改进¶

  • 向scrappy.mail添加了smtp-auth支持

  • 添加的新设置: MAIL_USERMAIL_PASS ( r2065 (149)

  • 添加了新的scrapy-ctl视图命令 - 在浏览器中查看URL,如Scrapy所见(:rev:2039

  • 添加了用于控制Scrapy进程的Web服务(这也会取消Web控制台的支持)。( r2053 (167)

  • 支持将Scrapy作为服务运行,用于生产系统( r1988 , r2054 , r2055 , r2056 , r2057 (168)

  • 添加了包装感应库(文档目前仅在源代码中可用)。( r2011 )

  • 简化和改进的响应编码支持( r1961 , r1969 )

  • 补充 LOG_ENCODING 设置( r1956 ,文档可用)

  • 补充 RANDOMIZE_DOWNLOAD_DELAY 设置(默认启用)( r1923 ,文档可用)

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

  • Linkextractor和新的Crawlspider现在处理相对的基标记URL( r1960 (148)

  • 项目加载器和处理器的几个改进( r2022 , r2023 , r2024 , r2025 , r2026 , r2027 , r2028 , r2029 , r2030 )

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

  • 支持不带回调的请求( r2050 (166)

API更改¶

  • 将``Spider.domain_name``改为``Spider.name``(SEP-012,:rev:1975

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

  • HttpErrorMiddleware 现在不返回任何值或引发异常( r2006 (157)

  • scrapy.command 模块重新定位( r2035 , r2036 , r2037 )

  • 补充 ExecutionQueue 用来喂蜘蛛( r2034 )

  • 删除了``ExecutionEngine`` singleton(:rev:2039

  • 端口 S3ImagesStore (图像管道)使用boto和线程( r2033 )

  • 移动模块: scrapy.management.telnetscrapy.telnet ( r2047 )

更改为默认设置¶

  • 更改的默认值 SCHEDULER_ORDERDFO ( r1939 )

新功能和改进¶

  • 向scrappy.mail添加了smtp-auth支持

  • 添加的新设置: MAIL_USERMAIL_PASS ( r2065 (149)

  • 添加了新的scrapy-ctl视图命令 - 在浏览器中查看URL,如Scrapy所见(:rev:2039

  • 添加了用于控制Scrapy进程的Web服务(这也会取消Web控制台的支持)。( r2053 (167)

  • 支持将Scrapy作为服务运行,用于生产系统( r1988 , r2054 , r2055 , r2056 , r2057 (168)

  • 添加了包装感应库(文档目前仅在源代码中可用)。( r2011 )

  • 简化和改进的响应编码支持( r1961 , r1969 )

  • 补充 LOG_ENCODING 设置( r1956 ,文档可用)

  • 补充 RANDOMIZE_DOWNLOAD_DELAY 设置(默认启用)( r1923 ,文档可用)

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

  • Linkextractor和新的Crawlspider现在处理相对的基标记URL( r1960 (148)

  • 项目加载器和处理器的几个改进( r2022 , r2023 , r2024 , r2025 , r2026 , r2027 , r2028 , r2029 , r2030 )

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

  • 支持不带回调的请求( r2050 (166)

API更改¶

  • 将``Spider.domain_name``改为``Spider.name``(SEP-012,:rev:1975

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

  • HttpErrorMiddleware 现在不返回任何值或引发异常( r2006 (157)

  • scrapy.command 模块重新定位( r2035 , r2036 , r2037 )

  • 补充 ExecutionQueue 用来喂蜘蛛( r2034 )

  • 删除了``ExecutionEngine`` singleton(:rev:2039

  • 端口 S3ImagesStore (图像管道)使用boto和线程( r2033 )

  • 移动模块: scrapy.management.telnetscrapy.telnet ( r2047 )

更改为默认设置¶

  • 更改的默认值 SCHEDULER_ORDERDFO ( r1939 )

Scrapy 0.8¶

旧问题追踪器(trac)中的nnn参考票等数字不再可用。

新特点¶

  • 添加了默认的响应编码设置( r1809 )

  • 在``FormRequest.from_response()``方法(:rev:1813,:rev:1816)中添加了``dont_click``参数

  • 在``FormRequest.from_response()``方法(:rev:1802,:rev:1803)中添加了``clickdata``参数

  • 添加了对HTTP代理的支持( HttpProxyMiddleware ( r1781 , r1785 )

  • 当过滤掉请求时,异地蜘蛛中间件现在记录消息。( r1841 )

向后不兼容的更改¶

  • 改变 scrapy.utils.response.get_meta_refresh() signature (r1804)

  • 删除了已弃用的``scrapy.item.ScrapedItem``类 - 使用``scrapy.item.Item代替```(:rev:1838

  • 删除了已弃用的``scrapy.xpath``模块 - 改为使用``scrapy.selector``。(启:1836

  • 删除了已弃用的``core.signals.domain_open``信号 - 改为使用``core.signals.domain_opened``(:rev:1822

  • log.msg() 现在收到一个 spider 论证(论证) r1822 )
    • 旧的域参数已被弃用,将在0.9中删除。对于蜘蛛,你应该经常使用 spider 参数并传递spider引用。如果确实要传递字符串,请使用 component 改为参数。

  • 改变核心信号 domain_openeddomain_closeddomain_idle

  • 将项目管道更改为使用spider而不是域
    • 这个 domain 的参数 process_item() 项目管道方法已更改为 spider ,新签名为: process_item(spider, item) ( r1827 (105)

    • 要快速移植代码(使用Scrapy0.8),只需使用 spider.domain_name 你以前用过的地方 domain .

  • 更改了stats API以使用spider而不是域( r1849 (113)
    • StatsCollector 已更改为在其方法中接收蜘蛛引用(而不是域)( set_valueinc_value 等)。

    • 补充 StatsCollector.iter_spider_stats() 方法

    • 删除了``StatsCollector.list_domains()``方法

    • 另外,stats信号被重命名,现在传递蜘蛛引用(而不是域)。以下是更改的摘要:

    • 要快速移植代码(使用Scrapy0.8),只需使用 spider.domain_name 你以前用过的地方 domain . spider_stats 包含与完全相同的数据 domain_stats .

  • CloseDomain 扩展移动到 scrapy.contrib.closespider.CloseSpider ( r1833 )
    • 其设置也被重命名:
      • CLOSEDOMAIN_TIMEOUT to CLOSESPIDER_TIMEOUT

      • CLOSEDOMAIN_ITEMCOUNT to CLOSESPIDER_ITEMCOUNT

  • 删除了已弃用的``SCRAPYSETTINGS_MODULE``环境变量 - 改为使用``SCRAPY_SETTINGS_MODULE``(:rev:1840

  • 将设置:``REQUESTS_PER_DOMAIN``重命名为``CONCURRENT_REQUESTS_PER_SPIDER``(:rev:1830,:rev:1844

  • 将设置:``CONCURRENT_DOMAINS``重命名为``CONCURRENT_SPIDERS``(:rev:1830

  • 重构HTTP缓存中间件

  • HTTP缓存中间件经过了大量的重构,保留了相同的功能,但删除了域分段。( r1843 )

  • 重命名的异常: DontCloseDomainDontCloseSpider ( r1859 (120)

  • 重命名的扩展名: DelayedCloseDomainSpiderCloseDelay ( r1861 (121)

  • 删除了过时的``scrapy.utils.markup.remove_escape_chars``函数 - 改用``scrapy.utils.markup.replace_escape_chars``(:rev:1865

新特点¶

  • 添加了默认的响应编码设置( r1809 )

  • 在``FormRequest.from_response()``方法(:rev:1813,:rev:1816)中添加了``dont_click``参数

  • 在``FormRequest.from_response()``方法(:rev:1802,:rev:1803)中添加了``clickdata``参数

  • 添加了对HTTP代理的支持( HttpProxyMiddleware ( r1781 , r1785 )

  • 当过滤掉请求时,异地蜘蛛中间件现在记录消息。( r1841 )

向后不兼容的更改¶

  • 改变 scrapy.utils.response.get_meta_refresh() signature (r1804)

  • 删除了已弃用的``scrapy.item.ScrapedItem``类 - 使用``scrapy.item.Item代替```(:rev:1838

  • 删除了已弃用的``scrapy.xpath``模块 - 改为使用``scrapy.selector``。(启:1836

  • 删除了已弃用的``core.signals.domain_open``信号 - 改为使用``core.signals.domain_opened``(:rev:1822

  • log.msg() 现在收到一个 spider 论证(论证) r1822 )
    • 旧的域参数已被弃用,将在0.9中删除。对于蜘蛛,你应该经常使用 spider 参数并传递spider引用。如果确实要传递字符串,请使用 component 改为参数。

  • 改变核心信号 domain_openeddomain_closeddomain_idle

  • 将项目管道更改为使用spider而不是域
    • 这个 domain 的参数 process_item() 项目管道方法已更改为 spider ,新签名为: process_item(spider, item) ( r1827 (105)

    • 要快速移植代码(使用Scrapy0.8),只需使用 spider.domain_name 你以前用过的地方 domain .

  • 更改了stats API以使用spider而不是域( r1849 (113)
    • StatsCollector 已更改为在其方法中接收蜘蛛引用(而不是域)( set_valueinc_value 等)。

    • 补充 StatsCollector.iter_spider_stats() 方法

    • 删除了``StatsCollector.list_domains()``方法

    • 另外,stats信号被重命名,现在传递蜘蛛引用(而不是域)。以下是更改的摘要:

    • 要快速移植代码(使用Scrapy0.8),只需使用 spider.domain_name 你以前用过的地方 domain . spider_stats 包含与完全相同的数据 domain_stats .

  • CloseDomain 扩展移动到 scrapy.contrib.closespider.CloseSpider ( r1833 )
    • 其设置也被重命名:
      • CLOSEDOMAIN_TIMEOUT to CLOSESPIDER_TIMEOUT

      • CLOSEDOMAIN_ITEMCOUNT to CLOSESPIDER_ITEMCOUNT

  • 删除了已弃用的``SCRAPYSETTINGS_MODULE``环境变量 - 改为使用``SCRAPY_SETTINGS_MODULE``(:rev:1840

  • 将设置:``REQUESTS_PER_DOMAIN``重命名为``CONCURRENT_REQUESTS_PER_SPIDER``(:rev:1830,:rev:1844

  • 将设置:``CONCURRENT_DOMAINS``重命名为``CONCURRENT_SPIDERS``(:rev:1830

  • 重构HTTP缓存中间件

  • HTTP缓存中间件经过了大量的重构,保留了相同的功能,但删除了域分段。( r1843 )

  • 重命名的异常: DontCloseDomainDontCloseSpider ( r1859 (120)

  • 重命名的扩展名: DelayedCloseDomainSpiderCloseDelay ( r1861 (121)

  • 删除了过时的``scrapy.utils.markup.remove_escape_chars``函数 - 改用``scrapy.utils.markup.replace_escape_chars``(:rev:1865

Scrapy 0.7¶

第一次发行的Scrapy。

以上是Scrapy – 发行说明的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>