Release notes

Note

Scrapy 1.x将是支持Python 2的最后一个系列.Scrapy2.0计划于2019年第四季度或2020年第一季度推出, 支持Python 3 .

Scrapy 1.8.0 (2019-10-28)

Highlights:

Backward-incompatible changes

另请参见下面的弃用清除 .

New features

Bug fixes

Documentation

Deprecation removals

Deprecations

Other changes

Scrapy 1.7.4 (2019-10-21)

还原问题3804问题3819 )的修复程序,该修复程序具有一些不良副作用( 问题3897问题3976 ).

结果,当使用项目初始化项目加载器时, ItemLoader.load_item()再次对以后的ItemLoader.get_output_value()ItemLoader.load_item()进行调用,将返回空数据.

Scrapy 1.7.3 (2019-08-01)

针对Python 3.4实施lxml 4.3.5或更低版本( 发行号3912发行号3918 ).

Scrapy 1.7.2 (2019-07-23)

修复了对Python 2的支持( 问题3889问题3893问题3896 ).

Scrapy 1.7.1 (2019-07-18)

重新包装Scrapy 1.7.0,该版本缺少PyPI中的某些更改.

Scrapy 1.7.0 (2019-07-18)

Note

确保安装了Scrapy 1.7.1. PyPI中的Scrapy 1.7.0软件包是错误的提交标记的结果,并且不包括下面描述的所有更改.

Highlights:

  • 改进针对多个域的爬网
  • A cleaner way to pass arguments to callbacks
  • JSON请求的新类
  • 基于规则的蜘蛛的改进
  • 饲料出口的新功能

Backward-incompatible changes

另请参见下面的弃用清除 .

New features

Bug fixes

Documentation

Deprecation removals

删除了以下不推荐使用的API( 问题3578 ):

  • scrapy.conf (use Crawler.settings)
  • From scrapy.core.downloader.handlers:
    • http.HttpDownloadHandler (use http10.HTTP10DownloadHandler)
  • scrapy.loader.ItemLoader._get_values (use _get_xpathvalues)
  • scrapy.loader.XPathItemLoader (use ItemLoader)
  • scrapy.log (see Logging)
  • From scrapy.pipelines:
    • files.FilesPipeline.file_key (use file_path)
    • images.ImagesPipeline.file_key (use file_path)
    • images.ImagesPipeline.image_key (use file_path)
    • images.ImagesPipeline.thumb_key (use thumb_path)
  • scrapy.selectorscrapy.selector.lxmlsel
  • From scrapy.selector.csstranslator:
  • From Selector:
    • _root (构造函数参数和object属性都使用root
    • extract_unquoted (use getall)
    • select (use xpath)
  • From SelectorList:
    • extract_unquoted (use getall)
    • select (use xpath)
    • x (use xpath)
  • scrapy.spiders.BaseSpider (use Spider)
  • Spider (和子类):
  • scrapy.spiders.spiders (use SpiderLoader)
  • scrapy.telnet (use scrapy.extensions.telnet)
  • From scrapy.utils.python:
    • str_to_unicode (use to_unicode)
    • unicode_to_str (use to_bytes)
  • scrapy.utils.response.body_or_str

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

Deprecations

  • SCHEDULER_PRIORITY_QUEUE设置的queuelib.PriorityQueue值已弃用. 请改用scrapy.pqueues.ScrapyPriorityQueue .
  • 不推荐使用不接受两个参数的传递给Rule process_request回调.
  • 不推荐使用以下模块:
  • 对于Python 3代码库,不建议使用scrapy.utils.datatypes.MergeDict类. 改用ChainMap . ( 发行3878
  • scrapy.utils.gz.is_gzipped函数已弃用. 请改用scrapy.utils.gz.gzip_magic_number .

Other changes

Scrapy 1.6.0 (2019-01-30)

Highlights:

  • 更好的Windows支持;
  • Python 3.7兼容性;
  • 重大的文档改进,包括从.extract_first() + .extract() API切换到.get() + .getall() API;
  • 提要导出,FilePipeline和MediaPipeline的改进;
  • 更好的扩展性: item_errorrequest_reached_downloader信号; from_crawler支持供稿导出器,供稿存储和dupefilters.
  • scrapy.contracts修复和新功能;
  • telnet控制台安全性改进,最早在Scrapy 1.5.2(2019-01-22)中作为反向端口发布;
  • 清理不推荐使用的代码;
  • 各种错误修复,小的新功能以及整个代码库的可用性改进.

Selector API changes

尽管这些更改不是Scrapy本身的更改,而是Scrapy用于xpath / css选择器的Parsel库中的更改,但这里值得一提. Scrapy现在依赖于Parsel> = 1.5,并且Scrapy文档已更新为遵循最新的parsel API约定.

最明显的变化是.get().getall()选择器方法现在优于.extract_first().extract() . 我们认为这些新方法可以使代码更简洁易读. 有关更多详细信息,请参见extract()和extract_first() .

Note

当前没有计划弃用.extract().extract_first()方法的计划.

另一个有用的新功能是Selector.attribSelectorList.attrib属性的引入,这使获取HTML元素的属性更加容易. 请参阅选择元素属性 .

CSS选择器缓存在parsel> = 1.5中,当多次使用相同的CSS路径时,它们会更快. 在Scrapy蜘蛛的情况下,这是非常常见的情况:回调通常在不同的页面上多次调用.

如果使用自定义SelectorSelectorList子类,则parsel中向后不兼容的更改可能会影响您的代码. 有关详细说明以及改进的完整列表,请参见parsel changelog .

Telnet console

向后不兼容 :Scrapy的telnet控制台现在需要用户名和密码. 有关更多详细信息,请参见Telnet控制台 . 此更改解决了一个安全问题 ; 有关详细信息,请参见Scrapy 1.5.2(2019-01-22)发行说明.

New extensibility features

  • from_crawler支持已添加到供稿导出器和供稿存储中. 除其他外,这允许从自定义提要存储和导出器访问Scrapy设置( 发行1605发行3348 ).
  • from_crawler支持已添加到dupefilters中( 发行2956 ); 这允许从dupefilter访问例如设置或蜘蛛网.
  • 当管道中发生错误时将触发item_error问题3256 );
  • 当Downloader收到新请求时,会触发request_reached_downloader ; 该信号可能对例如自定义调度程序( 问题3393 )很有用.
  • 新的SitemapSpider sitemap_filter()方法,该方法允许根据SitemapSpider子类中的属性选择站点地图条目( 发行3512 ).
  • 现在可以选择延迟加载Downloader Handlers. 这样可以在自定义下载程序处理程序( 问题3394 )中更好地进行初始化错误处理.

New FilePipeline and MediaPipeline features

scrapy.contracts improvements

  • 更好地处理了合同代码中的异常( 问题3377 );
  • dont_filter=True用于合同请求,它允许测试具有相同URL的不同回调( 问题3381 );
  • request_cls attribute in Contract subclasses allow to use different Request classes in contracts, for example FormRequest (issue 3383).
  • 修复了合同中的错误处理,例如,对于返回非200响应的URL执行合同的情况( 问题3371 ).

Usability improvements

  • RobotsTxtMiddleware的更多统计信息( 问题3100
  • INFO日志级别用于显示telnet主机/端口( 问题3115
  • a message is added to IgnoreRequest in RobotsTxtMiddleware (issue 3113)
  • Response.follow更好地验证url参数( 问题3131
  • 蜘蛛初始化时发生错误时,Scrapy命令返回非零退出代码( 问题3226
  • 链接提取改进:在方案列表中添加了" ftp"( 问题3152 ); " flv"已添加到常见的视频扩展名( 发行3165
  • 禁用导出器时出现更好的错误消息( 问题3358 );
  • scrapy shell --help提及本地文件( ./file.html )所需的语法- 发行3496 .
  • 引用标头值添加到RFPDupeFilter日志消息中( 问题3588

Bug fixes

  • 解决了Windows下.csv导出中多余的空行的问题问题3039 );
  • proper handling of pickling errors in Python 3 when serializing objects for disk queues (issue 3082)
  • 现在,在复制请求时保留标志( 发行3342 );
  • FormRequest.from_response clickdata不应忽略具有input[type=image]元素( 问题3153 ).
  • FormRequest.from_response应该保留重复的密钥( 问题3247

Documentation improvements

Deprecation removals

1.0之前的Scrapy模块名称的兼容性垫片已删除( 问题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弃用警告中的建议来更新代码.

其他弃用移除:

  • 不推荐使用的scrapy.interfaces.ISpiderManager已删除; 请使用scrapy.interfaces.ISpiderLoader.
  • CrawlerSettings使用的CrawlerSettings类已删除( 问题3327 ).
  • 不建议使用的Settings.overridesSettings.defaults属性将被删除( 问题3327问题3359 ).

Other improvements, cleanups

Scrapy 1.5.2 (2019-01-22)

  • 安全错误修复 :流氓网站可以很容易地利用Telnet控制台扩展将内容发布到http:// localhost:6023 ,我们还没有找到从Scrapy利用它的方法,但是欺骗浏览器非常容易,并且加大了当地发展环境的风险.

    该修复程序是向后不兼容的 ,默认情况下它使用随机生成的密码启用telnet用户密码身份验证. 如果您无法立即升级,请考虑将TELNETCONSOLE_PORT设置为其默认值以外的值.

    有关更多信息,请参阅telnet控制台文档.

  • 由于boto导入错误,在GCE环境下Backport CI生成失败.

Scrapy 1.5.1 (2018-07-12)

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

Scrapy 1.5.0 (2017-12-29)

此版本在整个代码库中带来了一些小的新功能和改进. 一些重点:

  • FilesPipeline和ImagesPipeline支持Google Cloud Storage.
  • 由于现在可以重新使用与代理服务器的连接,因此使用代理服务器进行爬网变得更加高效.
  • 警告,异常和日志消息得到改进,使调试更加容易.
  • scrapy parse命令现在允许通过--meta参数设置自定义请求元.
  • 与Python 3.6,PyPy和PyPy3的兼容性得到改善; 通过在CI上运行测试,现在正式支持PyPy和PyPy3.
  • HTTP 308、522和524状态代码的更好的默认处理.
  • 与往常一样,文档得到了改进.

Backward Incompatible Changes

  • Scrapy 1.5 drops support for Python 3.3.
  • 默认的Scrapy User-Agent现在使用https链接到scrapy.org( 发行2983 ). 这在技术上是向后不兼容的 ; 如果您依赖旧值,请覆盖USER_AGENT .
  • 记录由custom_settings覆盖的设置是固定的; 这在技术上是向后不兼容的,因为记录器从[scrapy.utils.log]更改为[scrapy.crawler] . 如果您要解析Scrapy日志,请更新您的日志解析器( 问题1343 ).
  • 现在,LinkExtractor现在默认情况下会忽略m4v扩展名,这是行为上的改变.
  • 522和524状态代码已添加到RETRY_HTTP_CODES发行2851

New features

  • Support <link> tags in Response.follow (issue 2785)
  • 支持ptpython REPL( 问题2654
  • Google Cloud Storage对FilesPipeline和ImagesPipeline的支持( 发行2923 ).
  • " scrapy parse"命令的新--meta选项允许传递附加的request.meta( 发行2883
  • 使用shell.inspect_response时填充蜘蛛变量( 问题2812
  • 处理HTTP 308永久重定向( 问题2844
  • 将522和524添加到RETRY_HTTP_CODES问题2851
  • 启动时记录版本信息( 问题2857
  • scrapy.mail.MailSender now works in Python 3 (it requires Twisted 17.9.0)
  • 与代理服务器的连接被重用( 问题2743
  • 添加用于下载器中间件的模板( 发行2755
  • 未定义解析回调时发出 NotImplementedError的显式消息( 问题2831
  • CrawlerProcess got an option to disable installation of root log handler (issue 2921)
  • LinkExtractor现在默认情况下忽略m4v扩展
  • DOWNLOAD_WARNSIZEDOWNLOAD_MAXSIZE限制范围内更好地记录响应消息( 问题2927
  • 将URL放置在Spider.allowed_domains而不是域中时显示警告( 问题2250 ).

Bug fixes

  • 修正记录由custom_settings覆盖的设置; 从技术上讲,这是向后不兼容的,因为记录器从[scrapy.utils.log]更改为[scrapy.crawler] ,因此,如果需要,请更新日志解析器( 发行1343
  • 默认的Scrapy User-Agent现在使用https链接到scrapy.org( 发行2983 ). 这在技术上是向后不兼容的 ; 如果您依赖旧值,请覆盖USER_AGENT .
  • 修复PyPy和PyPy3测试失败,并正式支持它们( 问题2793问题2935问题2990问题3050问题2213问题3048
  • DNSCACHE_ENABLED=False时修复DNS解析器( 问题2811
  • 为Debian Jessie tox test env添加cryptography发行2848
  • 添加验证以检查请求回调是否可调用( 发行2766
  • extras/qpsclient.py到Python 3( issue 2849
  • 在Python 3的场景下使用getfullargspec停止DeprecationWarning( 发行2862
  • 更新不建议使用的测试别名( 问题2876
  • Fix SitemapSpider support for alternate links (issue 2853)

Docs

  • AUTOTHROTTLE_TARGET_CONCURRENCY设置添加了缺少的项目符号点. ( 问题2756
  • 更新贡献文档,记录新的支持渠道( 问题2762 ,问题: 3038
  • 在文档中包括对Scrapy subreddit的引用
  • 修复断开的链接; 使用https://进行外部链接( 问题2978问题2982问题2958
  • 文档CloseSpider扩展更好( 发行2759
  • 在MongoDB示例中使用pymongo.collection.Collection.insert_one()发行2781
  • 拼写错误和拼写错误( 问题2828问题2837问题2884问题2924
  • 澄清CSVFeedSpider.headers文档( 问题2826
  • 记录DontCloseSpider异常并阐明spider_idle问题2791
  • 更新自述文件中的"发布"部分( 发行2764
  • 修复DOWNLOAD_FAIL_ON_DATALOSS文档中的第一个语法( 问题2763
  • 对startproject参数的描述的小修正( 发行2866
  • 在Response.body文档中澄清数据类型( 问题2922
  • 在DepthMiddleware文档中添加有关request.meta['depth']的注释( 发行2374
  • 在CookiesMiddleware文档中添加有关request.meta['dont_merge_cookies']的注释( 发行2999
  • 项目结构的最新示例( 问题2964问题2976
  • ItemExporters用法的更好示例( 发行2989
  • 蜘蛛和下载器中间件的文档from_crawler方法( 发行3019

Scrapy 1.4.0 (2017-05-18)

Scrapy 1.4并没有带来那么多惊人的新功能,但是仍然带来了许多方便的改进.

Scrapy现在通过新的FTP_USERFTP_PASSWORD设置支持具有可自定义用户名和密码的匿名FTP会话. 而且,如果您使用的是Twisted版本17.1.0或更高版本,则FTP现在可用于Python 3.

有一个用于创建请求的新的response.follow方法; 现在,推荐使用Scrapy spider创建请求 . 这种方法使编写正确的蜘蛛更加容易. 与直接创建scrapy.Request对象相比, response.follow具有多个优点:

  • it handles relative URLs;
  • 它可以与非UTF8页面上的非ASCII网址一起正常使用;
  • 除绝对和相对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. 这时不时地困扰着用户,实际上这并不是浏览器所要做的,因此我们删除了对提取链接的额外转换.

对于那些希望对Scrapy在跟随链接时发送的Referer:标头进行更多控制的用户,可以设置自己的Referrer Policy . 在Scrapy 1.4之前,默认的RefererMiddleware会将其盲目地设置为生成HTTP请求的响应的URL(这可能会泄漏URL种子上的信息). 默认情况下,Scrapy现在的行为与常规浏览器非常相似. 而且此政策可以使用W3C标准值(或如果您愿意的话,可以真正自定义的东西)完全自定义. 有关详细信息,请参见REFERRER_POLICY .

为了使Scrapy Spider易于调试,默认情况下Scrapy在1.4中记录了更多统计信息:内存使用统计信息,详细的重试统计信息,详细的HTTP错误代码统计信息. 一个类似的变化是HTTP缓存路径现在在日志中也可见.

最后但并非最不重要的一点是,Scrapy现在可以使用新的FEED_EXPORT_INDENT设置,使JSON和XML项目更易于阅读,在项目之间使用换行符甚至使用自定义缩进偏移量.

请享用! (或继续阅读此版本中的其余更改.)

Deprecations and Backward Incompatible Changes

  • scrapy.linkextractors.LinkExtractor默认值为canonicalize=False发行2537 ,修复发行1941发行1982 ): 警告,从技术上讲,这是向后不兼容的
  • 默认情况下启用memusage扩展( 问题2539 ,修复问题2187 ); 这在技术上是向后不兼容的,因此请检查是否设置了任何非默认的MEMUSAGE_***选项.
  • 现在, EDITOR环境变量的优先级高于settings.py中定义的EDITOR选项( 发行1829 ); 严格的默认设置不再依赖于环境变量. 从技术上讲,这是向后不兼容的更改 .
  • Spider.make_requests_from_url已过时( 发行1728 ,修复发行1495 ).

New Features

Bug fixes

Cleanups & Refactoring

  • 测试:删除临时文件和文件夹( 发行2570 ),在OS X上修复ProjectUtilsTest( 发行2569 ),在Travis CI上使用可移植pypy for Linux( 发行2710
  • _requests_to_follow中的_requests_to_follow分开的构建请求( 发行2562
  • 删除" Python 3进度"标志( 发行2567
  • .gitignore添加更多行( 发行2557
  • 删除凹凸版本预发行配置( 发行2159
  • 添加codecov.yml文件( 发行2750
  • 设置基于Twisted版本的上下文工厂实现( 发行2577 ,修复发行2560
  • 在默认的项目中间件模板中添加省略的self变量( 发行2595
  • 删除ExecutionEngine中的多余slot.add_request()调用( 发行2617
  • scrapy.pipelines.files.FSFilesStore捕获更多特定的os.error异常( 问题2644
  • 更改" localhost"测试服务器证书( 发行2720
  • 删除未使用的MEMUSAGE_REPORT设置( 问题2576

Documentation

Scrapy 1.3.3 (2017-03-10)

Bug fixes

  • 由于缺少依赖项和错误的SPIDER_MODULES ,默认使SpiderLoader再次引发ImportError . 从1.3.0版本开始,这些例外被静默作为警告. 引入了新的设置,以便在需要时在警告或异常之间切换; 有关详细信息,请参见SPIDER_LOADER_WARN_ONLY .

Scrapy 1.3.2 (2017-02-13)

Bug fixes

  • 在与字典(utils.reqser)进行相互转换时保留请求类( 发行2510 ).
  • 在教程( 问题2551 )中,为作者字段使用一致的选择器.
  • 修复Twisted 17+中的TLS兼容性( 问题2558

Scrapy 1.3.1 (2017-02-08)

New features

  • 为布尔设置支持'True''False'字符串值( 发行2519 ); 您现在可以执行诸如scrapy crawl myspider -s REDIRECT_ENABLED=False .
  • 通过response.xpath()支持kwargs使用XPath变量和临时命名空间声明; 这至少需要Parsel v1.1( 发行2457 ).
  • 添加对Python 3.6的支持( 问题2485 ).
  • 在PyPy上运行测试(警告:某些测试仍然失败,因此尚不支持PyPy).

Bug fixes

  • 强制执行DNS_TIMEOUT设置( 问题2496 ).
  • 修复view命令; 这是v1.3.0( 问题2503 )中的回归.
  • 使用文件/图像管道修复有关*_EXPIRES settings测试( 问题2460 ).
  • 使用基本项目模板时,修复生成的管道类的名称( 问题2466 ).
  • 修复Twisted 17+的兼容性( 发行2496发行2528 ).
  • 修复Python 3.6上的scrapy.Item继承( 问题2511 ).
  • 强制在SPIDER_MIDDLEWARESDOWNLOADER_MIDDLEWARESEXTENIONSSPIDER_CONTRACTS 发布组件顺序的数值( 发行2420 ).

Documentation

  • 重新编写Coduct代码部分,并升级到Contributor Covenant v1.4( 发行2469 ).
  • 澄清传递的蜘蛛参数会将其转换为蜘蛛属性( 问题2483 ).
  • FormRequest.from_response()上记录文档formid参数( 发行2497 ).
  • 将.rst扩展名添加到README文件中( 发行2507 ).
  • 提及LevelDB缓存存储后端( 问题2525 ).
  • 在示例回调代码中使用yield发行2533 ).
  • 添加有关使用.re()/.re_first()解码的HTML实体的注释( 发行1704 ).
  • 打字错误( 发行2512发行2534发行2531 ).

Cleanups

  • 在删除reduntant检查MetaRefreshMiddleware问题2542 ).
  • LinkExtractor更快地检查允许/拒绝模式( 问题2538 ).
  • 删除支持旧Twisted版本的无效代码( 发行2544 ).

Scrapy 1.3.0 (2016-12-21)

该版本发布于1.2.2之后不久,其主要原因是:发现自0.18到1.2.2(包括)为止的版本使用了Twisted( scrapy.xlib.tx.* )的一些scrapy.xlib.tx.*移植代码,即使较新的Twisted模块可用. Scrapy现在直接使用twisted.web.clienttwisted.internet.endpoints . (另请参见下面的清理.)

由于这是一项重大更改,因此我们希望尽快解决该错误,同时又不破坏使用1.2系列的任何项目.

New Features

  • MailSender现在接受单个字符串作为tocc参数的值( 问题2272
  • scrapy fetch url scrapy shell url scrapy fetch urlscrapy shell urlfetch(url)现在默认情况下遵循HTTP重定向( 发行2290 ); 有关详细信息,请参见fetchshell .
  • HttpErrorMiddleware现在以INFO级别而不是DEBUG记录错误; 从技术上讲这是向后不兼容的,因此请检查您的日志解析器.
  • 默认情况下,记录器名称现在使用长格式路径,例如[scrapy.extensions.logstats] ,而不是先前版本的较短"顶层"变体(例如[scrapy] ); 如果您的日志解析器需要简短的记录器名称部分,则这是向后不兼容的 . 您可以使用设置为True LOG_SHORT_NAMES切换回短记录器名称.

Dependencies & Cleanups

  • Scrapy现在需要Twisted> = 13.1,这已经在许多Linux发行版中出现.
  • 结果,我们摆脱了scrapy.xlib.tx.*模块,为那些使用"旧" Twisted版本的用户复制了Twisted代码
  • 不推荐使用ChunkedTransferMiddleware ,并将其从默认的下载器中间件中删除.

Scrapy 1.2.3 (2017-03-03)

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

Scrapy 1.2.2 (2016-12-06)

Bug fixes

  • 修复open_spider()上的管道失败时的隐式追溯( 发行2011年
  • 修复嵌入式IPython Shell变量(修复了在1.2.0中再次出现的问题396 ,已在问题2418中修复)
  • 处理robots.txt时有几个补丁:
    • 处理(非标准)相对站点地图URL( 问题2390
    • 在Python 2中处理非ASCII URL和用户代理( 发行2373

Documentation

Other changes

  • 宣传conda - forge作为Scrapy的官方conda频道( 发行2387
  • 尝试在非文本响应上使用.css().xpath()时,更有用的错误消息( 发行2264
  • startproject命令现在生成一个示例middlewares.py文件( 发行2335
  • scrapy version详细输出中添加更多依赖项的版本信息( 发行2404
  • 从源分发中删除所有*.pyc文件( 发行2386

Scrapy 1.2.1 (2016-10-21)

Bug fixes

  • 建立TLS / SSL连接时,请包括OpenSSL的更宽松的默认密码( 发行2314 ).
  • 修复非ASCII URL重定向上的"位置" HTTP标头解码( 问题2321 ).

Documentation

  • 修复JsonWriterPipeline示例( 问题2302 ).
  • 各种说明:有关蜘蛛名称的问题2330 ,有关中间件方法处理顺序的问题2329 ,有关将多值HTTP标头作为列表获取的问题2327 .

Other changes

  • 删除了www. 从内置蜘蛛模板中的start_urls发行2299 ).

Scrapy 1.2.0 (2016-10-03)

New Features

  • 新的FEED_EXPORT_ENCODING设置可自定义将项目写入文件时使用的编码. 可用于关闭JSON输出中的\uXXXX转义. 这对于那些需要UTF-8之外的XML或CSV输出( 问题2034 )的人也很有用.
  • startproject命令现在支持一个可选的目标目录,该目录可基于项目名称覆盖默认目录( 发行2005 ).
  • 用于记录请求序列化失败的新SCHEDULER_DEBUG设置( 问题1610 ).
  • JSON encoder now supports serialization of set instances (issue 2058).
  • Interpret application/json-amazonui-streaming as TextResponse (issue 1503).
  • scrapy is imported by default when using shell tools (shell, inspect_response) (issue 2248).

Bug fixes

  • 现在,DefaultRequestHeaders中间件在UserAgent中间件之前运行( 发行2088 ). 警告:从技术上讲这是向后不兼容的 ,尽管我们认为这是一个错误修复.
  • HTTP缓存扩展和使用.scrapy数据目录的插件现在可以在项目外部运行( 发行1581 ). 警告:从技术上讲这是向后不兼容的 ,尽管我们认为这是一个错误修复.
  • Selector does not allow passing both response and text anymore (issue 2153).
  • 修复了使用scrapy parse记录错误的回调名称的问题问题2169 ).
  • 修复了奇怪的gzip解压缩错误( 问题1606 ).
  • 修复了将CrawlSpiderscrapy parse一起使用时所选择的回调的问题问题2225 ).
  • 修复了Spider没有产生任何项目时,无效的JSON和XML文件的问题问题872 ).
  • 实现flush() fpr StreamLogger避免在日志中发出警告( 问题2125 ).

Refactoring

Tests & Requirements

Scrapy的新需求基准是Debian 8" Jessie". 以前是Ubuntu 12.04 Precise. 实际上,这意味着我们至少要对以下(主要)软件包版本进行连续集成测试:Twisted 14.0,pyOpenSSL 0.14,lxml 3.4.

Scrapy可以很好地与这些软件包的较早版本配合使用(例如,代码库中仍然具有针对较旧Twisted版本的开关),但不能保证(因为不再对其进行测试).

Documentation

Scrapy 1.1.4 (2017-03-03)

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

Scrapy 1.1.3 (2016-09-22)

Bug fixes

  • ImagesPipelineFilesPipeline子类的类属性与1.1.1之前FilesPipeline工作( 发行2243 ,修复发行2198

Documentation

Scrapy 1.1.2 (2016-08-18)

Bug fixes

  • 介绍一个缺少IMAGES_STORE_S3_ACL设置可覆盖默认的ACL策略ImagesPipeline当上传影像S3(注意,默认的ACL策略是"私" -而不是"公共-读" -因为Scrapy 1.1.0)
  • IMAGES_EXPIRES默认值设置回90(在1.1.1中引入了回归)

Scrapy 1.1.1 (2016-07-13)

Bug fixes

  • 将CONNECT请求中的"主机"标头添加到HTTPS代理( 问题2069
  • 选择响应类别时使用响应body问题2001 ,修复问题2000
  • 不要使用错误的netlocs对URL进行规范化( 问题2038 ,修复问题2010
  • HttpCompressionMiddleware (和SitemapSpider )的一些修复:
  • 针对IP地址主机验证证书时,捕获(并忽略警告)异常( 问题2094 ,修复问题2092
  • 使FilesPipelineImagesPipeline再次向后兼容,以使用旧类属性进行自定义( 发行1989 ,修复发行1985

New features

  • 在项目文件夹外启用genspider命令( 问题2052
  • 默认情况下重试HTTPS CONNECT TunnelError问题1974

Documentation

  • 字典位置的FEED_TEMPDIR设置( 落实9b3c72c
  • 在概述中使用惯用的.extract_first()1994年发行
  • 更新版权声明中的年份( commit c2c8036
  • 添加有关犯错误的信息和示例( 1995年发行
  • 在下载器中间件示例中使用" url"变量( 版本2015
  • 语法修复( 问题2054问题2120
  • 有关在蜘蛛回调中使用BeautifulSoup的新的常见问题解答条目( 发行2048
  • 添加有关scrapy在Windows 3上无法使用Python 3的注释( 发行2060
  • 在请求请求中鼓励完整标题( 发行2026年

Tests

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

Scrapy 1.1.0 (2016-05-11)

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

  • Scrapy 1.1具有Beta Python 3支持(需要Twisted> = 15.5). 有关更多详细信息和某些限制,请参见Beta Python 3支持 .
  • 热门新功能:
  • 这些错误修复可能需要您引起注意:
    • 默认情况下,请勿重试错误请求(HTTP 400)( 问题1289 ). 如果您需要旧的行为,请将400添加到RETRY_HTTP_CODES .
    • 修复shell文件参数处理( 问题1710问题1550 ). 如果您尝试scrapy shell index.html ,它将尝试加载URL http://index.html ,请使用scrapy shell ./index.html加载本地文件.
    • 现在默认情况下为新创建的项目启用了Robots.txt合规性( 问题1724 ). 在进行抓取之前,Scrapy还将等待robots.txt下载( 发行1735 ). 如果要禁用此行为, ROBOTSTXT_OBEY在创建新项目后在settings.py文件中更新ROBOTSTXT_OBEY .
    • 现在,出口商可以处理unicode,而不是默认使用字节( 发行1080 ). 如果使用PythonItemExporter ,则可能需要更新代码以禁用现已弃用的二进制模式.
    • 接受包含点的XML节点名称为有效节点( 发行1533 ).
    • 将文件或图像上传到S3(使用FilesPipelineImagesPipeline )时,默认的ACL策略现在为"专用",而不是"公共" 警告:向后不兼容! . 您可以使用FILES_STORE_S3_ACL进行更改.
    • 我们重新实现了canonicalize_url()以获得更正确的输出,尤其是对于具有非ASCII字符的URL( 发行号1947 ). 与以前的scrapy版本相比,这可能会更改链接提取程序的输出. 这也可能会使您在1.1之前的版本中仍可能拥有的某些缓存条目无效. 警告:向后不兼容! .

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

Beta Python 3 Support

我们一直在努力使Scrapy在Python 3上运行 . 结果,现在您可以在Python 3.3、3.4和3.5上运行Spider(需要Twisted> = 15.5). 某些功能仍然缺失(某些功能可能永远不会移植).

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

  • Scrapy在使用Python 3的Windows上不起作用
  • 不支持发送电子邮件
  • 不支持FTP下载处理程序
  • 不支持Telnet控制台

Additional New Features and Enhancements

Deprecations and Removals

  • 添加了to_bytesto_unicode ,不str_to_unicode使用str_to_unicodeunicode_to_str函数( 问题778 ).
  • 引入binary_is_text ,以替换isbinarytext使用(但返回值反向)( 发行1851
  • optional_features设置已被删除( 发行1359 ).
  • --lsprof命令行选项已删除( 发行1689 ). 警告:向后不兼容 ,但不会破坏用户代码.
  • 不推荐使用以下数据类型( 问题1720 ):
    • scrapy.utils.datatypes.MultiValueDictKeyError
    • scrapy.utils.datatypes.MultiValueDict
    • scrapy.utils.datatypes.SiteNode
  • 先前捆绑的scrapy.xlib.pydispatch库已被弃用,并由pydispatcher代替.

Relocations

Bugfixes

Scrapy 1.0.7 (2017-03-03)

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

Scrapy 1.0.6 (2016-05-04)

  • FIX:RetryMiddleware现在对非标准HTTP状态代码( 问题1857 )具有鲁棒性
  • FIX:Filestorage HTTP缓存正在检查错误的修改时间( 问题1875
  • DOC:支持Sphinx 1.4+( 版本1893
  • DOC:选择器示例中的一致性( 问题1869年

Scrapy 1.0.5 (2016-02-04)

Scrapy 1.0.4 (2015-12-30)

Scrapy 1.0.3 (2015-08-11)

Scrapy 1.0.2 (2015-08-06)

Scrapy 1.0.1 (2015-07-01)

Scrapy 1.0.0 (2015-06-19)

在此主要版本中,您会发现很多新功能和错误修正. 请务必查看更新后的概述,以了解一些更改以及掠过的教程 .

Support for returning dictionaries in spiders

声明并返回Scrapy Items不再需要从蜘蛛收集收集的数据,现在您可以返回显式词典.

经典版

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}

Per-spider settings (GSoC 2014)

上一个Google Summer of Code项目完成了对用于填充设置的机制的重要重新设计,引入了显式优先级来覆盖任何给定设置. 作为该目标的扩展,我们为专供单个蜘蛛使用的设置增加了新的优先级,从而使他们可以重新定义项目设置.

通过在您的Spider中定义一个custom_settings类变量来开始使用它:

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

Read more about settings population: Settings

Python Logging

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

Old version

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

新版本

import logging
logging.info('MESSAGE')

使用Spider进行日志记录保持不变,但是在log()方法之上,您将有权访问为Spider创建的自定义logger以发出日志事件:

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

在日志记录文档中了解更多信息: 日志记录

Crawler API refactoring (GSoC 2014)

上一届Google Summer of Code的另一个里程碑是内部API的重构,力求更简单,更轻松地使用. 在以下位置检查新的核心接口: 核心API

在脚本中运行Scrapy时,通常会遇到这些更改. 这是一个如何使用新API手动运行Spider的快速示例:

from scrapy.crawler import CrawlerProcess

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

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

查看有关运行Scrapy的脚本的更多示例: 常见实践

Module Relocations

为了改善Scrapy的总体结构,对模块进行了大量的重新排列. 主要更改是将各个子程序包划分为新项目,并将scrapy.contribscrapy.contrib_expscrapy.contrib_exp为顶级程序包. 内部重定位之间保持了向后兼容性,而导入已弃用的模块时,会发出警告,指出它们的新位置.

Full list of relocations

Outsourced packages

Note

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

旧位置 新地点
scrapy.commands.deploy scrapyd-client (在此处查看其他替代方案: 部署Spider
scrapy.contrib.djangoitem scrapy-djangoitem
scrapy.webservice scrapy-jsonrpc

scrapy.contrib_exp and scrapy.contrib dissolutions

旧位置 新地点
scrapy.contrib_exp.downloadermiddleware.decompression scrapy.downloadermiddlewares.decompression
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

设置重命名

Old location 新地点
SPIDER_MANAGER_CLASS SPIDER_LOADER_CLASS

Changelog

新功能和增强功能

弃用和移除

  • 弃用htmlparser链接提取器( 问题1205
  • 从FeedExporter中删除不赞成使用的代码( 发行1155
  • 剩余的15个兼容性( 问题925
  • 放弃对CONCURRENT_REQUESTS_PER_SPIDER的支持( 问题895
  • 删除旧引擎代码( 问题911
  • 弃用SgmlLinkExtractor( 问题777

Relocations

Documentation

Bugfixes

  • 项目多继承修复( 问题353问题1228
  • ItemLoader.load_item:遍历字段副本( 问题722
  • 修复Deferred(RobotsTxtMiddleware)中未处理的错误( 问题1131问题1197
  • 强制将DOWNLOAD_TIMEOUT读取为int( 发行954
  • scrapy.utils.misc.load_object应该打印完整的回溯( 问题902
  • 修复" .local"主机名的错误( 问题878
  • 修复了已启用的扩展,中间件,管道信息不再打印的问题问题879
  • 修复在meta上设置为false时dont_merge_cookies的不良行为( 问题846

Python 3进行中支持

  • 如果twisted.conch不可用,请禁用scrapy.telnet( 问题1161
  • 修复ajaxcrawl.py中的Python 3语法错误( 问题1162
  • urllib的更多python3兼容性更改( 问题1121
  • assertItemsEqual在Python 3中被重命名为assertCountEqual.( 发行1070
  • 导入unittest.mock(如果可用). ( 发行1066
  • updated deprecated cgi.parse_qsl to use six’s parse_qsl (issue 909)
  • 防止Python 3端口回归( 问题830
  • PY3:对Python 3使用MutableMapping( 问题810
  • PY3:使用six.BytesIO和six.moves.cStringIO( 发行803
  • PY3:修复xmlrpclib和电子邮件导入( 问题801
  • PY3:robotparser和urlparse使用六个( 发行800
  • PY3:使用six.iterkeys,six.iteritems和tempfile( 发行799
  • PY3:修复has_key并使用six.moves.configparser( 问题798
  • PY3:使用six.moves.cPickle( 问题797
  • PY3使得可以在Python3中运行某些测试( 问题776

Tests

  • remove unnecessary lines from py3-ignores (issue 1243)
  • 修复pytest在收集测试时剩余的警告( 问题1206
  • 将文档版本添加到travis( 版本1234
  • TST不会从已弃用的模块中收集测试. ( 发行1165
  • 在测试中安装service_identity软件包以防止出现警告( 问题1168
  • 修复测试中已弃用的设置API( 问题1152
  • 使用POST方法为Webclient添加测试,并且没有给出任何正文( 发行1089
  • py3-ignores.txt支持注释( 问题1044
  • 使某些断言现代化( 问题835
  • 选择器.__ repr__测试( 问题779

代码重构

  • CSVFeedSpider清理:使用iterate_spider_output( 发行1079
  • 从scrapy.utils.spider.iter_spider_output中删除不必要的检查( 问题1078
  • Pydispatch pep8( 发行992
  • 从walk_modules()中删除了未使用的" load = False"参数( 问题871
  • 为了保持一致性, job_dirSpiderState扩展中使用job_dir帮助程序. ( 问题805
  • 重命名" sflo"局部变量为不太神秘的" log_observer"( 问题775

Scrapy 0.24.6 (2015-04-20)

Scrapy 0.24.5 (2015-02-25)

Scrapy 0.24.4 (2014-08-09)

Scrapy 0.24.3 (2014-08-09)

Scrapy 0.24.2 (2014-07-08)

  • 使用可变映射来代理不推荐使用的settings.overrides和settings.defaults属性( commit e5e8133
  • 尚不支持python3( commit 3cd6146
  • 更新设置为debian软件包的python兼容版本( commit fa5d76b
  • 发行说明中的​​DOC修复格式( 提交c6a9e20

Scrapy 0.24.1 (2014-06-27)

  • Fix deprecated CrawlerSettings and increase backward compatibility with .defaults attribute (commit 8e3f20a)

Scrapy 0.24.0 (2014-06-26)

Enhancements

Bugfixes

  • 在RegexLinkExtractor中创建链接时对unicode URL值进行编码( 发行561
  • 忽略ItemLoader处理器中的None值( 问题556
  • 当SGMLLinkExtractor和HtmlParserLinkExtractor中有内部标记时,修复链接文本( 问题485问题574
  • 修复了对不赞成使用的类的子类的错误检查( 问题581问题584
  • 处理由inspect.stack()失败引起的错误( 问题582
  • 修复对不存在的引擎属性的引用( 问题593问题594
  • 修复type()的动态itemclass示例用法( 问题603
  • 使用lucasdemarchi / codespell修正拼写错误( 问题628
  • 将SgmlLinkExtractor中的attrs参数的默认值固定为元组( 问题661
  • 修复Sitemap阅读器中的XXE缺陷( 问题676
  • 修复引擎以支持过滤的启动请求( 问题707
  • 修复没有主机名的URL上的异地中间件情况( 问题745
  • Testsuite不再需要PIL( 发行585

Scrapy 0.22.2 (released 2014-02-14)

Scrapy 0.22.1 (released 2014-02-08)

  • localhost666在某些情况下可以解决( 提交2ec2279
  • 测试inspect.stack故障( 提交cc3eda3
  • 处理inspect.stack()失败的情况( commit 8cb44f9
  • 修复了对不赞成使用的类的子类的错误检查. 关闭#581( commit 46d98d6
  • Docs:最终蜘蛛示例的4个空格缩进( commit 13846de
  • 修复HtmlParserLinkExtractor并在#485合并后进行测试( commit 36​​8a946
  • BaseSgmlLinkExtractor:修复了链接具有内部标签时的丢失空间( 提交b566388
  • BaseSgmlLinkExtractor:添加了带有内部标记的链接的单元测试( commit c1cb418
  • BaseSgmlLinkExtractor:修复了unknown_endtag(),以便仅在结束标记与开始标记匹配时才设置current_link = None( commit 7e4d627
  • 修复Travis-CI构建的测试( 提交76c7e20
  • 用html实体替换无法编码的代码点. 修复#562和#285( commit 5f87b17
  • RegexLinkExtractor:在创建链接时对URL Unicode值进行编码( commit d0ee545
  • 使用最新输出更新了教程爬网输出. ( 提交8da65de
  • 使用搜寻器参考更新了shell文档,并修复了实际的shell输出. ( 提交875b9ab
  • PEP8次要编辑. ( 提交f89efaf
  • 将当前的履带暴露在刮擦的外壳中. ( 提交5349cec
  • 未使用的重新导入和PEP8的次要编辑. ( 提交387f414
  • 使用ItemLoader时,忽略None的值. ( 提交0632546
  • DOC修复了HTTPCACHE_STORAGE错字的默认值,即现在的Filesystem而不是Dbm. ( 提交cde9a8c
  • 以文字代码显示ubuntu设置说明( commit fb5c9c5
  • Update Ubuntu installation instructions (commit 70fb105)
  • 合并来自stray -leone / patch-1的拉取请求#550( 提交6f70b6a
  • modify the version of scrapy ubuntu package (commit 725900d)
  • 修复0.22.0发布日期( commit af0219a
  • 修复news.rst中的错别字并删除(尚未发布)标头( commit b7f58f4

Scrapy 0.22.0 (released 2014-01-17)

Enhancements

  • [ 向后不兼容 ]将HTTPCacheMiddleware后端切换到文件系统( 问题541 ),要恢复旧的后端,请将HTTPCACHE_STORAGE设置为scrapy.contrib.httpcache.DbmCacheStorage
  • 使用CONNECT方法的代理https://网址( 问题392问题397
  • 添加中间件以对由Google定义的Ajax可爬网页面进行爬网( 问题343
  • 将scrapy.spider.BaseSpider重命名为scrapy.spider.Spider( 发行510发行519
  • 选择器默认情况下注册EXSLT名称空间( 发行472
  • 统一项目加载器,类似于选择器重命名( 问题461
  • 使RFPDupeFilter类易于子类化( 发行533
  • 提高测试覆盖率和即将提供的Python 3支持( 问题525
  • 将有关设置和中间件的启动信息提升到INFO级别( 问题520
  • get_func_args util中支持get_func_args问题506 ,问题: 504
  • 允许通过tox运行个别测试( 问题503
  • 更新链接提取程序忽略的扩展( 问题498
  • 添加中间件方法以获取文件/图像/缩略图路径( 发行490
  • 改进异地中间件测试( 问题478
  • 添加一种跳过由RefererMiddleware设置的默认Referer标头的方法( 发行475
  • 不要在默认的Accept-Encoding标头中发送x-gzip问题469
  • 支持使用设置定义http错误处理( 问题466
  • 在发现遗物的地方都使用现代python习语( 发行497
  • 改进和更正文档( 问题527问题524问题521问题517问题512问题505问题502问题489问题465问题460问题425问题536

Fixes

  • 更新CrawlSpider模板中的Selector类导入( 问题484
  • 修复对engine.slots引用( 问题464
  • 不要尝试在非TextResponse实例上调用body_as_unicode()问题462
  • 在子类化XPathItemLoader时发出警告,以前它仅在实例化时发出警告. ( 问题523
  • 在子类化XPathSelector时发出警告,以前它仅在实例化时发出警告. ( 问题537
  • 内存统计信息的多个修复程序( 问题531问题530问题529
  • 修复FormRequest.from_response()替代URL( 问题507
  • 修正测试跑步者的点数为1.5( 问题513
  • 修复蜘蛛名称为unicode时的日志记录错误( 问题479

Scrapy 0.20.2 (released 2013-12-09)

Scrapy 0.20.1 (released 2013-11-28)

  • 需要include_package_data来从发布的资源构建轮子( 提交5ba1ad5
  • process_parallel正在内部延迟泄漏故障. 关闭#458( commit 419a780

Scrapy 0.20.0 (released 2013-11-08)

Enhancements

  • 包括CSS选择器( 问题395问题426 )的新选择器API,
  • 现在,请求/响应的url / body属性是不可变的(修改它们已被弃用很长时间了)
  • 现在将ITEM_PIPELINES定义为字典(而不是列表)
  • Sitemap Spider可以获取备用URL( 问题360
  • Selector.remove_namespaces()现在从元素的属性中删除名称空间. ( 问题416
  • 为Python 3.3+铺平了道路( 问题435问题436问题431问题452
  • 使用带有嵌套支持的本机python类型的新项目导出程序( 问题366
  • 调整HTTP1.1池大小,使其与设置定义的并发性匹配( 落实b43b5f575
  • scrapy.mail.MailSender现在可以通过TLS连接或使用STARTTLS进行升级( 问题327
  • 具有从ImagesPipeline中排除的功能的新FilesPipeline( 问题370问题409
  • 推荐使用枕头而不是PIL进行图像处理( 问题317
  • 为Ubuntu量化和raring添加了debian软件包( commit 86230c0
  • 模拟服务器(用于测试)可以侦听HTTPS请求( 问题410
  • 从多个核心组件中删除多蜘蛛支持( 问题422问题421问题420问题419问题423问题418
  • Travis-CI现在针对w3libqueuelib python软件包的开发版本测试了Scrapy更改.
  • 将pypy 2.1添加到持续集成测试中( commit ecfa7431
  • Pylinted,pep8并从源中删除了旧式异常( 问题430问题432
  • 使用importlib进行参数导入( 问题445
  • 处理Python 2.7.5中引入的影响XmlItemExporter的回归( 问题372
  • 修复SIGINT上的Bug爬网关闭( 问题450
  • 不要在FormRequest.from_response中提交reset类型输入( 提交b326b87
  • 请求errback引发异常时不要沉默下载错误( 提交684cfc0

Bugfixes

Other

  • 不再支持Python 2.6( 问题448
  • 添加cssselect python软件包作为安装依赖项
  • 删除libxml2和多选择器的后端支持,从现在开始需要lxml .
  • 最低Twisted版本增加到10.0.0,放弃了Twisted 8.0支持.
  • 现在运行测试套件需要mock python库( 发行390

Thanks

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

按提交次数排序的贡献者列表:

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 (released 2013-10-10)

  • IPython拒绝更新名称空间. 修复#396( commit 3d32c4f
  • 修复AlreadyCalledError替换shell命令中的请求. 关闭#407( commit b1d8919
  • 修复start_requests惰性和早期挂起( commit 89faf52

Scrapy 0.18.3 (released 2013-10-03)

Scrapy 0.18.2 (released 2013-09-03)

  • scrapy check命令修复和向后兼容的多爬虫程序( 问题339

Scrapy 0.18.1 (released 2013-08-27)

  • 删除由樱桃选择的更改添加的额外导入( 提交d20304e
  • 修复11.0.0之前的版本下的爬网测试( commit 1994f38
  • py26 can not format zero length fields {} (commit abf756f)
  • 在未绑定的响应上测试PotentiaDataLoss错误( 落实b15470d
  • 将没有内容长度或传输编码的响应视为良好响应( commit c4bf324
  • 如果未启用http11处理程序,则不包括ResponseFailed( 提交6cbe684
  • 新的HTTP客户端在ResponseFailed异常中包装连接丢失. 修复#373( commit 1a20bba
  • 限制travis-ci构建矩阵( commit 3b01bb8
  • 合并来自peterarenot / patch-1的拉取请求#375( 提交fa766d7
  • 已修复,因此它引用了正确的文件夹( 提交3283809
  • 添加了定量和稀疏度以支持ubuntu版本( commit 1411923
  • 修复重试中间件,该中间件在升级到http1客户端后不重试某些连接错误,关闭了GH-373( commit bb35ed0
  • 修复Python 2.7.4和2.7.5中的XmlItemExportercommit de3e451
  • minor updates to 0.18 release notes (commit c45e5f1)
  • 修复贡献者列表格式( commit 0b60031

Scrapy 0.18.0 (released 2013-08-09)

  • 使用Tox对测试套件进行了许多改进,包括在pypi上进行测试的方法
  • 处理AJAX可爬网URL的GET参数( commit 3fe2a32
  • Use lxml recover option to parse sitemaps (issue 347)
  • Bugfix cookie按主机名而不是netloc合并( 问题352
  • 支持使用标志设置禁用HttpCompressionMiddleware问题359
  • XMLFeedSpider使用iternodes解析器支持xml名称空间( 第12期
  • 支持dont_cache请求元标记( 问题19
  • 错误修正scrapy.utils.gz.gunzip被python 2.7.4中的更改所破坏( commit 4dc76e
  • SgmlLinkExtractor上的SgmlLinkExtractor修正网址编码( 第24版
  • 错误修正TakeFirst处理器不应舍弃零(0)值( 问题59
  • 在xml导出器中支持嵌套项目( 问题66
  • 提高cookie处理性能( 问题77
  • 记录重复筛选过滤的请求一次( 问题105
  • 将重定向中间件分为状态和基于元的中间件( 问题78
  • 使用HTTP1.1作为默认下载处理程序( 问题109问题318
  • FormRequest.from_response上支持xpath表单选择( 发行185
  • SgmlLinkExtractor错误修正unicode解码错误( 问题199
  • 在pypi解释器上发布错误修正信号( 问题205
  • 改善请求延迟和并发处理( 问题206
  • 将RFC2616缓存策略添加到HttpCacheMiddleware问题212
  • 允许自定义引擎记录的消息( 问题214
  • DjangoItem多项改进( 问题217问题218问题221
  • 使用setuptools入口点扩展Scrapy命令( 发行260
  • 允许设置蜘蛛网allowed_domains值/元组( 问题261
  • Support settings.getdict (issue 269)
  • 简化内部scrapy.core.scraper插槽的处理( 问题271
  • Added Item.copy (issue 290)
  • 收集空闲的下载器插槽( 问题297
  • 添加ftp://方案下载程序处理程序( 问题329
  • 添加了下载程序基准Web服务器和蜘蛛工具基准化
  • 将持久性(磁盘上的)队列移到了一个单独的项目( queuelib ),现在抓取依赖于
  • 使用外部库添加scrapy命令( 问题260
  • scrapy命令行工具中添加了--pdb选项
  • 添加了XPathSelector.remove_namespaces ,它允许从XML文档中删除所有命名空间,以方便使用(与缺少命名空间的XPath一起使用). 记录在选择器中 .
  • 蜘蛛合约的几项改进
  • 名为MetaRefreshMiddldeware的新默认中间件,可处理元刷新html标签重定向,
  • MetaRefreshMiddldeware和RedirectMiddleware具有不同的优先级来解决#62
  • 向蜘蛛添加了from_crawler方法
  • 使用模拟服务器添加了系统测试
  • 对Mac OS兼容性的更多改进(感谢Alex Cepoi)
  • 对单例和多蜘蛛支持又进行了几次清理(感谢Nicolas Ramirez)
  • 支持自定义下载插槽
  • 在" shell"命令中添加了–spider选项.
  • 开始抓取时记录覆盖的设置

感谢为此版本做出贡献的每个人. 以下是按提交次数排序的贡献者列表:

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 (released 2013-05-30)

  • 当scrapy部署重定向到新端点时,遵循请求方法( commit 8c4fcee
  • 修复不正确的下载程序中间件文档. 裁判#280( commit 40667cb
  • doc:删除指向diveintopython.org的链接,该链接不再可用. 关闭#246( commit bd58bfa
  • 在无效的html5文档中查找表单节点( 提交e3d6945
  • 修正错字标签attrs类型为bool而不是list( commit a274276

Scrapy 0.16.4 (released 2013-01-23)

  • 修复了文档中的拼写错误( commit 6d2b3aa
  • 添加有关禁用扩展的文档. 裁判#132( commit c90de33
  • 修复错误消息格式. log.err()不支持炫酷的格式,并且在发生错误时,消息为:"错误:错误处理%(item)s"( 提交c16150c
  • 棉绒并改善图像管道错误日志记录( commit 56b45fc
  • 固定doc错字( 提交243be84
  • 添加文档主题:广泛的爬网和常见实践( commit 1fbb715
  • 修复未明确指定Spider时scrapy parse命令中的错误. 关闭#209( commit c72e682
  • 更新docs / topics / commands.rst( commit 28eac7a

Scrapy 0.16.3 (released 2012-12-07)

  • 使用下载延迟时,请消除并发限制,并且仍确保强制执行请求间延迟( 提交487b9b5
  • 当图像管道失败时添加错误详细信息( 提交8232569
  • improve mac os compatibility (commit 8dcf8aa)
  • setup.py:使用README.rst填充long_description( commit 7b5310d
  • doc:删除了对ClientForm的过时引用( commit 80f9bb6
  • 默认存储后端的正确文档( commit 2aa491b
  • doc:从常见问题解答中删除了损坏的proxyhub链接( commit bdf61c4
  • 修复了SpiderOpenCloseLogging示例中的文档拼写错误( 提交7184094

Scrapy 0.16.2 (released 2012-11-09)

Scrapy 0.16.1 (released 2012-10-26)

  • 修复了LogStats扩展名,该扩展名在0.16发行版之前的错误合并后被破坏了( commit 8c780fd
  • scrapy.conf.settings的更好的向后兼容性( 提交3403089
  • 有关如何从扩展访问爬网程序统计信息的扩展文档( 落实c4da0b5
  • 删除了.hgtags(因为scrapy使用git不再需要了)( commit d52c188
  • 修复rst标头下的破折号( commit fa4f7f9
  • 在新闻中为0.16.0设置发布日期( 提交e292246

Scrapy 0.16.0 (released 2012-10-18)

草率的更改:

  • 添加了Spiders Contracts ,这是一种以正式/可复制的方式测试蜘蛛的机制
  • runspider命令添加了选项-o-t
  • 已记录的AutoThrottle扩展,并已添加到默认安装的扩展中. 您仍然需要使用AUTOTHROTTLE_ENABLED启用它
  • 主要统计信息集合重构:删除了全局/每个蜘蛛统计信息的分离,删除了与统计信息相关的信号( stats_spider_opened等). 统计信息现在更加简单,向后兼容性保留在Stats Collector API和信号上.
  • 向蜘蛛中间件添加了process_start_requests()方法
  • 掉落信号单例. 现在应通过Crawler.signals属性访问信号. 有关更多信息,请参见信号文档.
  • 掉落信号单例. 现在应通过Crawler.signals属性访问信号. 有关更多信息,请参见信号文档.
  • 掉落了Stats Collector单身人士. 现在可以通过Crawler.stats属性访问统计信息. 有关更多信息,请参阅统计信息收集文档.
  • documented Core API
  • lxml现在是默认的选择器后端,而不是libxml2
  • 移植FormRequest.from_response()以使用lxml代替ClientForm
  • 删除的模块: scrapy.xlib.BeautifulSoupscrapy.xlib.ClientForm
  • SitemapSpider:添加了对以.xml和.xml.gz结尾的站点地图url的支持,即使它们宣传了错误的内容类型( commit 10ed28b
  • StackTraceDump扩展:还转储trackref实时引用( 提交fe2ce93
  • nested items now fully supported in JSON and JSONLines exporters
  • 添加了cookiejar请求元密钥以支持每个Spider多个cookie会话
  • 将编码检测代码解耦到w3lib.encoding ,并移植Scrapy代码以使用该模块
  • 不再支持Python 2.5. 参见https://blog.scrapinghub.com/2012/02/27/scrapy-0-15-dropping-support-for-python-2-5/
  • 不再支持Twisted 2.5
  • 添加了REFERER_ENABLED设置,以控制引用中间件
  • changed default user agent to: Scrapy/VERSION (+http://scrapy.org)
  • scrapy.contrib.linkextractors.image移除(未记录) HTMLImageLinkExtractor
  • 删除了每蜘蛛设置(将被实例化多个搜寻器对象代替)
  • USER_AGENT蜘蛛属性将不再起作用,请改用user_agent属性
  • DOWNLOAD_TIMEOUT蜘蛛属性将不再起作用,请改用download_timeout属性
  • 删除了ENCODING_ALIASES设置,因为编码自动检测已移至w3lib
  • DjangoItem提升为主要贡献者
  • LogFormatter方法现在返回dicts(而不是字符串)以支持惰性格式( 问题164提交dcef7b0
  • 下载程序处理程序( DOWNLOAD_HANDLERS设置)现在接收设置作为构造函数的第一个参数
  • 用(更可移植的) 资源模块替换了内存使用计数,删除了scrapy.utils.memory模块
  • 删除的信号: scrapy.mail.mail_sent
  • 删除了TRACK_REFS设置,现在始终启用trackrefs
  • DBM现在是HTTP缓存中间件的默认存储后端
  • 现在可以通过Scrapy统计信息(状态名称: log_count/LEVEL )跟踪日志消息的数量(每级)
  • 现在可以通过Scrapy统计信息跟踪收到的响应数(统计名称: response_received_count
  • removed scrapy.log.started attribute

Scrapy 0.14.4

Scrapy 0.14.3

  • 忘记包含pydispatch许可证. #118( 提交fd85f9c
  • 在源代码分发中包括测试人员使用的egg文件. #118( 提交c897793
  • 更新项目模板中的文档字符串,以避免与genspider命令混淆,该命令可能被视为高级功能. 裁判#107( commit 2548dcc
  • 在docs / topics / firebug.rst中添加了有关关闭Google目录的注释提交668e352
  • 不要在空时丢弃插槽,只需保存在另一个字典中即可,以便在需要时再次使用. ( 提交8e9f607
  • do not fail handling unicode xpaths in libxml2 backed selectors (commit b830e95)
  • 修复了请求对象文档中的小错误( commit bf3c9ee
  • 修复了链接提取程序文档中的次要缺陷( 落实ba14f38
  • 删除了scrapy中与sqlite支持相关的一些过时的剩余代码( 提交0665175

Scrapy 0.14.2

  • 在计算校验和之前,移动指向文件开头的缓冲区. 裁判#92( commit 6a5bef2
  • 在保留图像之前计算图像校验和. 关闭#92( commit 9817df1
  • 删除缓存失败中的泄漏引用( 提交673a120
  • 修复了MemoryUsage扩展中的错误:get_engine_status()恰好接受1个参数(给定0)( 提交11133e9
  • 修复了HTTP压缩中间件上的struct.error. 关闭#87( commit 1423140
  • Ajax爬行未针对unicode网址进行扩展( 提交0de3fb4
  • 捕获start_requests迭代器错误. 裁判#83( commit 454a21d
  • 加速libxml2 XPathSelector( commit 2fbd662
  • 根据最近的更改更新了版本控制文档( 提交0a070f5
  • scrapyd:固定的文档链接( commit 2b4e4c3
  • extras / makedeb.py:不再从git获取版本( commit caffe0e

Scrapy 0.14.1

Scrapy 0.14

New features and settings

  • 支持AJAX可检索网址
  • 新的持久性调度程序,将请求存储在磁盘上,从而可以暂停和继续爬网( r2737
  • scrapy crawl添加了-o选项,这是将报废项转储到文件中的快捷方式(或使用-标准输出)
  • 添加了对将自定义设置传递到Scrapyd schedule.json api( r2779r2783 )的支持
  • 新的ChunkedTransferMiddleware (默认情况下启用)以支持分块传输编码r2769
  • 添加对S3下载处理程序( r2763 )的boto 2.0支持
  • 在feed导出( r2744 )支持的格式中添加了元帅marshal
  • 在请求errbacks,冒犯请求在现在接收failure.request属性( r2738
  • Big downloader refactoring to support per domain/ip concurrency limits (r2732)
  • 添加了内置缓存DNS解析器( r2728
  • 将与Amazon AWS相关的组件/扩展(SQS蜘蛛队列,SimpleDB统计收集器)移至一个单独的项目:[scaws]( https://github.com/scrapinghub/scaws )( r2706r2714
  • 将蜘蛛队列移至scrapyd: scrapy.spiderqueue > scrapyd.spiderqueuer2708
  • 将sqlite utils移至scrapyd: scrapy.utils.sqlite > scrapyd.sqliter2781
  • 真正支持在start_requests()方法上返回迭代器. 现在,当蜘蛛变得空闲时,在爬网期间消耗迭代器( r2704
  • 添加了REDIRECT_ENABLED设置以快速启用/禁用重定向中间件( r2697
  • 添加了RETRY_ENABLED设置以快速启用/禁用重试中间件( r2694
  • 添加了CloseSpider异常以手动关闭蜘蛛( r2691
  • 通过添加对HTML5元字符集声明( r2690 )的支持,改进了编码检测
  • Refactored close spider behavior to wait for all downloads to finish and be processed by spiders, before closing the spider (r2688)
  • 添加了SitemapSpider (请参见"蜘蛛"页面中的文档)( r2658
  • 添加了LogStats扩展,用于定期记录基本统计信息(例如抓取的页面和已抓取的项目)( r2657
  • 使压缩响应的处理更可靠(#319, r2643 ). 现在,Scrapy将尝试从压缩的响应中尽可能多地解压缩,而不是失败IOError .
  • 简化的!MemoryDe​​bugger扩展,可使用统计信息转储内存调试信息( r2639
  • 添加了用于编辑蜘蛛的新命令: scrapy editr2636 )和-e标志到使用它的genspider命令( r2653
  • 将项目的默认表示形式更改为漂亮的字典. ( r2631 ). 通过使日志在默认情况下(对于Scraped行和Dropped行)更具可读性,从而改善了默认日志记录.
  • 添加了spider_error信号( r2628
  • 添加了COOKIES_ENABLED设置( r2625
  • 现在将统计信息转储到Scrapy日志( STATS_DUMP设置的默认值已更改为True ). 这是为了使Scrapy用户更了解Scrapy统计信息以及在那里收集的数据.
  • 增加了对动态调整下载延迟和最大并发请求的支持( r2599
  • 添加了新的DBM HTTP缓存存储后端( r2576
  • 向Scrapyd( r2571 )添加了listjobs.json API
  • CsvItemExporter :添加了join_multivalued参数( r2578
  • xmliter_lxmlr2552 )添加了名称空间支持
  • 通过使COOKIES_DEBUG更好并进行记录来改进cookie中间件( r2579
  • 对Scrapyd和Link提取程序的一些改进

Code rearranged and removed

  • Merged item passed and item scraped concepts, as they have often proved confusing in the past. This means: (r2630)
    • 原始item_scraped信号已删除
    • 原始item_passed信号已重命名为item_scraped
    • 旧的日志行Scraped Item...已删除
    • 旧的日志行Passed Item...重命名为Scraped Item...行,并降级为DEBUG级别
  • Reduced Scrapy codebase by striping part of Scrapy code into two new libraries:
    • w3lib (来自scrapy.utils.{http,markup,multipart,response,url}几个函数,在r2584中完成)
    • 刮擦 (是scrapy.contrib.ibl ,在r2586中完成)
  • 删除了未使用的函数: scrapy.utils.request.request_info()r2577
  • examples/googledir删除了googledir项目. GitHub上现在有一个名为dirbot的新示例项目: https : //github.com/scrapy/dirbot
  • 删除了对Scrapy项目中默认字段值的支持( r2616
  • 删除了实验性crawlspider v2( r2632
  • 删除了调度程序中间件以简化体系结构. 现在,重复过滤器是在调度程序中完成的,使用与以前相同的dupe fluttering类( DUPEFILTER_CLASS设置)( r2640
  • 删除了将URL传递给scrapy crawl命令的支持(改为使用scrapy parse )( r2704
  • 删除了不建议使用的执行队列( r2704
  • 删除(未记录的)蜘蛛上下文扩展名(从scrapy.contrib.spidercontext)( r2780
  • 删除了CONCURRENT_SPIDERS设置(改为使用scrapyd maxproc)( r2789
  • 重命名核心组件的属性:downloader.sites-> downloader.slots, scraper.sites- > scraper.slotsr2717r2718
  • 将设置CLOSESPIDER_ITEMPASSED重命名为CLOSESPIDER_ITEMCOUNTr2655 ). 向后兼容.

Scrapy 0.12

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

New features and improvements

  • 现在,已传递的项目将在item_passeditem参数中item_passed (#273)
  • scrapy version命令中添加了详细选项,对于错误报告很有用(#298)
  • 现在默认情况下将HTTP缓存存储在项目数据目录中(#279)
  • 添加了项目数据存储目录(#276,#277)
  • Scrapy项目的文档化文件结构(请参阅命令行工具doc)
  • XPath选择器的新lxml后端(#147)
  • 每蜘蛛设置(#245)
  • Support exit codes to signal errors in Scrapy commands (#248)
  • scrapy shell命令中添加了-c参数
  • 使libxml2可选(#260)
  • 新的deploy命令(#261)
  • 添加了CLOSESPIDER_PAGECOUNT设置(#253)
  • 添加了CLOSESPIDER_ERRORCOUNT设置(#254)

Scrapyd changes

  • Scrapyd现在每个蜘蛛使用一个进程
  • 它会在每次蜘蛛运行时存储一个日志文件,并对其进行轮换以使每个蜘蛛运行最新的5个日志(默认情况下)
  • 添加了最小的Web ui,默认情况下位于http:// localhost:6800
  • 现在有一个scrapy server命令来启动当前项目的Scrapyd服务器

Changes to settings

  • 添加了HTTPCACHE_ENABLED设置(默认为False)以启用HTTP缓存中间件
  • changed HTTPCACHE_EXPIRATION_SECS semantics: now zero means “never expire”.

Deprecated/obsoleted functionality

  • 不建议使用runserver命令,而建议使用server命令来启动Scrapyd服务器. 另请参阅:Scrapyd更改
  • 不推荐使用的queue命令,建议使用Scrapyd schedule.json API. 另请参阅:Scrapyd更改
  • 删除了!LxmlItemLoader(实验贡献从未升级为主要贡献)

Scrapy 0.10

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

New features and improvements

  • 名为scrapyd新Scrapy服务,用于在生产中部署Scrapy爬网程序(#218)(可用文档)
  • 简化的图像管道用法,现在不需要子类化自己的图像管道(#217)
  • Scrapy Shell现在默认显示Scrapy日志(#206)
  • 通用基本代码中的重构执行队列和称为"蜘蛛队列"的可插入后端(#220)
  • 新的永久蜘蛛队列(基于SQLite)(#198)默认情况下可用,它允许在服务器模式下启动Scrapy,然后安排蜘蛛运行.
  • 添加了有关Scrapy命令行工具及其所有可用子命令的文档. (提供文档)
  • 具有可插入后端的Feed导出程序(#197)(提供文档)
  • 递延信号(#193)
  • 向项目管道open_spider()和close_spider()添加了两个新方法,并提供了延迟支持(#195)
  • 支持覆盖每个蜘蛛的默认请求标头(#181)
  • Replaced default Spider Manager with one with similar functionality but not depending on Twisted Plugins (#186)
  • 将Debian软件包分为两个软件包-库和服务(#187)
  • Scrapy日志重构(#188)
  • 用于在不同运行之间保持持久蜘蛛上下文的新扩展(#203)
  • 添加了dont_redirect request.meta键以避免重定向(#233)
  • 添加了dont_retry request.meta键以避免重试(#234)

Command-line tool changes

  • 新的scrapy命令取代了旧的scrapy-ctl.py (#199)-现在只有一个全局scrapy命令,而不是每个项目一个scrapy-ctl.py - scrapy.bat添加了scrapy.bat脚本,可从Windows更方便地运行
  • 向命令行工具添加了bash补全功能(#210)
  • 重命名命令startrunserver (#209)

API changes

  • Request对象的urlbody属性现在是只读的(#230)
  • Request.copy()Request.replace()也复制其callbackerrback属性(#231)
  • 去除UrlFilterMiddlewarescrapy.contrib (已经被默认禁用)
  • 异地中间件软件不会过滤掉来自不具有allowed_domains属性的蜘蛛的任何请求(#225)
  • 删除了Spider Manager load()方法. 现在,蜘蛛将被加载到构造函数中.
  • Changes to Scrapy Manager (now called “Crawler”):
    • scrapy.core.manager.ScrapyManager类重命名为scrapy.crawler.Crawler
    • scrapy.core.manager.scrapymanager单例已移至scrapy.project.crawler
  • 模块已移动: scrapy.contrib.spidermanagerscrapy.spidermanager
  • 蜘蛛经理单从移动scrapy.spider.spidersspiders` attribute of ``scrapy.project.crawler单.
  • moved Stats Collector classes: (#204)
    • scrapy.stats.collector.StatsCollector to scrapy.statscol.StatsCollector
    • scrapy.stats.collector.SimpledbStatsCollector to scrapy.contrib.statscol.SimpledbStatsCollector
  • 现在,在命令对象类的default_settings属性中指定了默认的每个命令设置(#201)
  • changed arguments of Item pipeline process_item() method from (spider, item) to (item, spider)
    • 保持向后兼容(带有弃用警告)
  • moved scrapy.core.signals module to scrapy.signals
    • backward compatibility kept (with deprecation warning)
  • moved scrapy.core.exceptions module to scrapy.exceptions
    • 保持向后兼容(带有弃用警告)
  • 加入handles_request()类方法来BaseSpider
  • 删除scrapy.log.exc()函数(改用scrapy.log.err()
  • scrapy.log.msg()函数的已删除component参数
  • dropped scrapy.log.log_level attribute
  • 向蜘蛛管理器和项目管道管理器添加了from_settings()类方法

Changes to 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

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

New features and improvements

  • 向scrapy.mail添加了SMTP-AUTH支持
  • 添加了新设置: MAIL_USERMAIL_PASSr2065 |#149)
  • 添加了新的scrapy-ctl view命令-在浏览器中查看URL,如Scrapy( r2039 )所见
  • Added web service for controlling Scrapy process (this also deprecates the web console. (r2053 | #167)
  • 支持在生产系统中运行Scrapy即服务( r1988r2054r2055r2056r2057 |#168)
  • 添加了包装器归纳库(文档仅在源代码中才可用). ( r2011
  • 简化和改进的响应编码支持( r1961r1969
  • 添加了LOG_ENCODING设置( r1956 ,提供文档)
  • 添加了RANDOMIZE_DOWNLOAD_DELAY设置(默认情况下启用)( r1923 ,可用文档)
  • MailSender不再是IO阻止( r1955 |#146)
  • Linkextractors和新的Crawlspider现在可以处理相对的基本标记url( r1960 |#148)
  • 对项目加载器和处理器进行了一些改进( r2022r2023r2024r2025r2026r2027r2028r2029r2030
  • 添加了对向telnet控制台添加变量的支持( r2047 |#165)
  • 支持不带回调的请求( r2050 |#166)

API changes

  • Change Spider.domain_name to Spider.name (SEP-012, r1975)
  • 现在, Response.encoding是检测到的编码( r1961
  • HttpErrorMiddleware现在返回None或引发异常( r2006 |#157)
  • scrapy.command modules relocation (r2035, r2036, r2037)
  • 添加了ExecutionQueue以供蜘蛛抓取( r2034
  • 删除了ExecutionEngine单例( r2039
  • 移植了S3ImagesStore (图像管道)以使用boto和线程( r2033
  • 将模块: scrapy.management.telnet移至scrapy.telnetr2047

Changes to default settings

  • 将默认的SCHEDULER_ORDER更改为DFOr1939

Scrapy 0.8

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

New features

  • 添加了DEFAULT_RESPONSE_ENCODING设置( r1809
  • FormRequest.from_response()方法添加了dont_click参数( r1813r1816
  • FormRequest.from_response()方法添加了clickdata参数( r1802r1803
  • 添加了对HTTP代理( HttpProxyMiddleware )的支持( r1781r1785
  • 现在,非现场蜘蛛中间件在过滤出请求时会记录消息( r1841

Backward-incompatible changes

  • 更改了scrapy.utils.response.get_meta_refresh()签名( r1804
  • 删除过时scrapy.item.ScrapedItem类-利用scrapy.item.Item insteadr1838
  • 删除了不推荐使用的scrapy.xpath模块-改用scrapy.selector . ( r1836
  • 删除了不推荐使用的core.signals.domain_open信号-改用core.signals.domain_openedr1822
  • log.msg() now receives a spider argument (r1822)
    • 旧的域参数已被弃用,并将在0.9中删除. 对于蜘蛛,您应始终使用spider参数并传递蜘蛛引用. 如果您确实要传递字符串,请改用component参数.
  • 改变的核心信号domain_openeddomain_closeddomain_idle
  • Changed Item pipeline to use spiders instead of domains
    • process_item()项目管道方法的domain参数更改为spider ,新签名为: process_item(spider, item)r1827 |#105)
    • 要快速移植代码(与Scrapy 0.8一起使用),只需在先前使用domain地方使用spider.domain_name .
  • Changed Stats API to use spiders instead of domains (r1849 | #113)
    • StatsCollector更改为在其方法( set_valueinc_value等)中接收蜘蛛引用(而不是域).
    • added StatsCollector.iter_spider_stats() method
    • removed StatsCollector.list_domains() method
    • 此外,Stats信号已重命名,现在传递了蜘蛛引用(而不是域). 以下是更改的摘要:
    • 要快速移植代码(与Scrapy 0.8一起使用),只需在先前使用domain地方使用spider.domain_name . spider_stats包含完全相同的数据domain_stats .
  • CloseDomain extension moved to scrapy.contrib.closespider.CloseSpider (r1833)
    • Its settings were also renamed:
      • CLOSEDOMAIN_TIMEOUT to CLOSESPIDER_TIMEOUT
      • CLOSEDOMAIN_ITEMCOUNT to CLOSESPIDER_ITEMCOUNT
  • 删除了不推荐使用的SCRAPYSETTINGS_MODULE环境变量-改用SCRAPY_SETTINGS_MODULEr1840
  • 重命名设置: REQUESTS_PER_DOMAINCONCURRENT_REQUESTS_PER_SPIDERr1830r1844
  • 重命名设置: CONCURRENT_DOMAINSCONCURRENT_SPIDERSr1830
  • 重构的HTTP缓存中间件
  • HTTP缓存中间件已进行了重大重构,保留了相同的功能,但已删除了域分区. ( r1843
  • 重命名异常: DontCloseDomainDontCloseSpiderr1859 |#120)
  • 重命名扩展名: DelayedCloseDomainSpiderCloseDelayr1861 |#121)
  • 删除了过时的scrapy.utils.markup.remove_escape_chars函数-改用scrapy.utils.markup.replace_escape_charsr1865

Scrapy 0.7

Scrapy的第一个版本.