Scrapy – 发行说明
刮痧2.3.0(2020-08-04)¶
亮点:
-
Feed exports 现在支持 Google Cloud Storage 作为存储后端
-
新的
FEED_EXPORT_BATCH_ITEM_COUNT设置允许批量传递输出项,最多可达指定的项数。它还可以作为 delayed file delivery ,这会导致Scrapy在使用某些存储后端时仅在爬网完成后才开始项目传递 (S3 , FTP ,现在呢 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_curland
curl_to_request_kwargs()now also support
--data-raw(issue 4612) -
A
parsecallback may now be used in built-in spider subclasses, such
asCrawlSpider(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_curl和curl_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_receivedsignal 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 inRequest.cb_kwargsor
Request.metawhen persisting
scheduled requests (issue 4554) -
升级了 pickle protocol 从协议2到协议4的Scrapy使用,提高了序列化能力和性能 (issue 4135 , issue 4541 )
-
scrapy.utils.misc.create_instance()now raises aTypeError
exception if the resulting instance isNone(issue 4528,
issue 4532)
错误修复¶
-
CookiesMiddlewareno longer
discards cookies defined inRequest.headers(issue 1992, issue 2400) -
CookiesMiddlewareno longer
re-encodes cookies defined asbytesin thecookiesparameter
of the__init__method ofRequest
(issue 2400, issue 3575) -
什么时候?
FEEDS定义多个uri,FEED_STORE_EMPTY是False爬网不会产生任何项目,Scrapy在第一个URI之后不再停止feed导出 (issue 4621 , issue 4626 ) -
Spidercallbacks defined using coroutine
syntax no longer need to return an iterable, and may
instead return aRequestobject, an
item, orNone(issue 4609) -
这个
startproject命令现在确保生成的项目文件夹和文件具有正确的权限 (issue 4604 ) -
Fix a
KeyErrorexception 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.metakeys, 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 )
-
改进了
crawl和runspider命令 (issue 4548 , issue 4552 ) -
Replaced
chain(*iterable)withchain.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, andSiteNode
classes have been removed fromscrapy.utils.datatypes
(issue 4400)
贬抑¶
-
这个
FEED_FORMAT和FEED_URI设置已被弃用,取而代之的是FEEDS设置 (issue 1336 , issue 3858 , issue 4507 )
新特点¶
-
一个新的环境,
FEEDS,允许配置具有不同设置的多个输出源 (issue 1336 , issue 3858 , issue 4507 ) -
这个
crawl和runspider命令现在支持多个-o参数 (issue 1336 , issue 3858 , issue 4507 ) -
这个
crawl和runspider命令现在支持通过附加:<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 aDeferred(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 )
-
删除了有关导入的警告
StringTransport从twisted.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
reactorimports to prevent
errors about the wrong Twisted reactor being installed when setting a
different Twisted reactor usingTWISTED_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 include7z,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_settings或from_crawler类方法将此类参数公开给自定义下载处理程序。(issue 4126 )
-
-
我们已经重构了
scrapy.core.scheduler.Scheduler类和相关队列类(请参见SCHEDULER_PRIORITY_QUEUE,SCHEDULER_DISK_QUEUE和SCHEDULER_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 syntax 和 experimental support 对于
asyncio和asyncio-支持的库 (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.CertificateHTTPS响应的对象 (issue 2726 , issue 4054 ) -
一个新的
DNS_RESOLVER设置允许启用IPv6支持 (issue 1031 , issue 4227 ) -
一个新的
SCRAPER_SLOT_MAX_ACTIVE_SIZE设置允许配置现有的软限制,当正在处理的总响应数据太高时暂停请求下载 (issue 1410 , issue 3551 ) -
A new
TWISTED_REACTORsetting allows customizing the
reactorthat 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_crawlerorfrom_settings(issue 3884) -
The new
Response.cb_kwargs
attribute serves as a shortcut forResponse.request.cb_kwargs(issue 4331) -
Response.follownow supports a
flagsparameter, for consistency withRequest
(issue 4277, issue 4279) -
Item loader processors 现在可以是正则函数,它们不再需要是方法 (issue 3899 )
-
Rule现在接受一个errback参数 (issue 4000 ) -
Request不再需要callback当errback参数已指定 (issue 3586 , issue 4008 ) -
LogFormatter现在支持一些其他方法:-
download_error对于下载错误 -
item_errorfor exceptions
raised during item processing by item pipelines -
spider_errorfor 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__方法(如果需要),并访问kwargs在self._kwargs打电话给他们的父母之后__init__方法 (issue 4193 , issue 4370 ) -
一个新的
keep_fragments参数scrapy.utils.request.request_fingerprint()允许为URL中包含不同片段的请求生成不同的指纹 (issue 4104 ) -
下载处理程序(请参见
DOWNLOAD_HANDLERS)现在可以使用from_settings和from_crawler其他垃圾组件已经支持的类方法 (issue 4126 ) -
scrapy.utils.python.MutableChain.__iter__now returnsself,
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
ValueErrorexception raised when
scrapy.utils.misc.create_instance()gets bothsettingsand
crawlerset toNone(issue 4128)
文档¶
-
API文档现在链接到相应源代码的联机、语法突出显示视图 (issue 4148 )
-
链接到不存在的文档页现在允许访问侧栏 (issue 4152 , issue 4169 )
-
文档中的交叉引用现在在悬停时显示工具提示 (issue 4173 , issue 4183 )
-
Improved the documentation about
LinkExtractor.extract_linksand
simplified 链接提取器 (issue 4045) -
阐明了
ItemLoader.item作品 (issue 3574 , issue 4099 ) -
Clarified that
logging.basicConfig()should not be used when also
usingCrawlerProcess(issue 2149,
issue 2352, issue 3146, issue 3960) -
Clarified the requirements for
Requestobjects
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.rst和CODE_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_crawler或from_settings类方法:-
用于包含工厂函数的参数,
qfactory,现在作为名为的关键字参数传递downstream_queue_cls. -
添加了一个新的关键字参数:
key. 对于内存队列,它始终是空字符串,并指示JOB_DIR磁盘队列的值。 -
包含上一次爬网数据的磁盘队列的参数,
startprios或slot_startprios,现在作为名为的关键字参数传递startprios. -
这个
serialize不再传递参数。在写入磁盘之前,磁盘队列类必须自己处理请求序列化,使用request_to_dict()和request_from_dict()中的函数scrapy.utils.reqser模块。
-
以下更改可能会影响自定义磁盘和内存队列类:
-
签名
__init__方法现在__init__(self, crawler, key).
以下更改特别影响 ScrapyPriorityQueue 和 DownloaderAwarePriorityQueue 类来自 scrapy.core.scheduler 并可能影响子类:
-
在
__init__方法,则应用上述大多数更改。__init__仍然可以接收所有参数作为位置参数,但是:-
downstream_queue_cls,取代了qfactory,必须以不同的方式实例化。qfactory已用优先级值(整数)实例化。实例
downstream_queue_cls应该使用新的ScrapyPriorityQueue.qfactory或DownloaderAwarePriorityQueue.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_PARSER和ROBOTSTXT_USER_AGENT设置 -
新的
DOWNLOADER_CLIENT_TLS_CIPHERS和DOWNLOADER_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_loggingandtls_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_curlclass
method allows creating a request from a cURL command (issue 2985, issue 3862) -
A new
ROBOTSTXT_PARSERsetting 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
(seeRequest.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 configuredLOG_FORMATTER
returnNone(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_pathand
ImagesPipeline.file_pathno 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
andPythonItemExporter(issue 3973) -
API documentation added for
BaseItemand
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因此。 -
Crawler,CrawlerRunner.crawl和CrawlerRunner.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_CHECKvariable is now set to thetruestring during runs
of thecheckcommand, 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 ) -
例外
ItemLoaderinput and output processors 现在更详细了 (issue 3836 , issue 3840 ) -
Crawler,CrawlerRunner.crawl和CrawlerRunner.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
Rulenow covers how to access
the text of a link when usingCrawlSpider
(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_path和ImagesPipeline.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.selector和scrapy.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_error和request_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.attrib 和 SelectorList.attrib 属性,这使得获取HTML元素的属性更加容易。见 选择元素属性 .
CSS选择器缓存在parsel>=1.5中,这使得在多次使用相同的css路径时更快。这是非常常见的情况下,剪贴蜘蛛:回调通常被称为多次,在不同的网页。
如果使用自定义 Selector 或 SelectorList 子类 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_URL,AWS_USE_SSL,AWS_VERIFY,AWS_REGION_NAME. 例如,这允许使用可选的或自托管的与AWS兼容的提供程序( issue 2609 , issue 3548 ) -
对谷歌云存储的ACL支持:
FILES_STORE_GCS_ACL和IMAGES_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.overrides和Settings.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
ptpythonREPL (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_WARNSIZE和DOWNLOAD_MAXSIZE限制(限制) issue 2927 ) -
当URL被放入时显示警告
Spider.allowed_domains而不是域( issue 2250 )
错误修复¶
-
修复由重写的设置的日志记录
custom_settings; this 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 ) -
添加
cryptographyfor 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_USER 和 FTP_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=Falsein
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/count,retry/max_reached和retry/reason_count/<reason>统计到RetryMiddleware( issue 2543 ) -
补充
httperror/response_ignored_count和httperror/response_ignored_status_count/<status>统计到HttpErrorMiddleware( issue 2566 ) -
可定制的
Referrer policyinRefererMiddleware( issue 2306 ) -
新的
data:URI下载处理程序器( issue 2334 修正 issue 2156 ) -
使用HTTP缓存时的日志缓存目录( issue 2611 修正 issue 2604 )
-
当项目包含重复的蜘蛛名称时警告用户(修复 issue 2181 )
-
scrapy.utils.datatypes.CaselessDict现在接受Mapping实例而不仅仅是dicts (issue 2646 ) -
Media downloads 用
FilesPipeline或ImagesPipeline,现在可以选择使用新的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: gzip在HttpCompressionMiddleware阶段(阶段) 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.errorexception 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_user和ftp_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_MIDDLEWARES,DOWNLOADER_MIDDLEWARES,EXTENIONS和SPIDER_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.client 和 twisted.internet.endpoints 直接。(另请参见下面的清理。)
由于这是一个重大的变化,我们希望在不破坏任何使用1.2系列的项目的情况下,快速修复bug。
新特点¶
-
``MailSender``现在接受单个字符串作为``to``和``cc``参数的值(:issue:2272)
-
scrapy fetch url,scrapy shell url和fetch(url)在Scrapy shell中,默认情况下遵循HTTP重定向 (issue 2290 见fetch和shell有关详细信息。 -
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"键入Request的metaDICT 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工具时默认导入(shell, inspect_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()FPRStreamLogger避免日志中出现警告( 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)
文档¶
-
Overview 和 tutorial 重写以使用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_STORE和HTTPCACHE_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 )如果您需要旧的行为,请添加
400到RETRY_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时(使用
FilesPipeline或ImagesPipeline)默认的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蜘蛛属性或Request的meta密钥(密钥) issue 1334 , issue 1364 , issue 1447 ) -
表格提交:
-
现在也可以使用``<button>``元素(:issue:1469)。
-
空字符串现在用于没有值的提交按钮( issue 1472 )
-
-
类似dict的设置现在具有每个键的优先级( issue 1135 , issue 1149 和 issue 1586 )
-
发送非ASCII电子邮件( issue 1662 )
-
CloseSpider和SpiderState如果没有设置相关设置,扩展现在将被禁用。( 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 ) -
FilesPipeline和ImagesPipeline设置现在是实例属性而不是类属性,启用特定于蜘蛛的行为( 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_bytes和to_unicode蔑视str_to_unicode和unicode_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.contrib 和 scrapy.contrib_exp 到顶级包中。内部重新定位之间保持向后兼容性,而导入不推荐使用的模块时会收到指示其新位置的警告。
重新定位的完整列表¶
外包包
注解
这些扩展进行了一些小的更改,例如更改了一些设置名称。请检查每个新存储库中的文档以熟悉新用法。
|
老位置 |
新位置 |
|---|---|
|
scrapy.commands.deploy |
scrapyd-client (见其他备选方案: 部署蜘蛛 ) |
|
scrapy.contrib.djangoitem |
scrapy-djangoitem |
|
scrapy.webservice |
scrapy-jsonrpc |
scrapy.contrib_exp 和 scrapy.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.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/filtered和offsite/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_STORAGE到scrapy.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 更改
w3lib和queuelibpython包。 -
将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支持。
-
现在运行测试套件需要
mockpython库( 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和-t到runspider命令 -
文件化的 AutoThrottle 扩展 并添加到默认安装的扩展。您仍然需要启用它
AUTOTHROTTLE_ENABLED -
主要统计数据收集重构:删除全局/每个蜘蛛统计数据的分离,删除与统计数据相关的信号(
stats_spider_opened等)。统计信息现在要简单得多,在统计信息收集器API和信号上保持向后兼容性。 -
补充
process_start_requests()蜘蛛中间商的方法 -
信号掉了。现在应该可以通过爬虫信号属性。有关更多信息,请参阅信号文档。
-
删除了统计收集器singleton。现在可以通过crawler.stats属性访问状态。有关详细信息,请参阅统计信息收集文档。
-
文件化的 核心API
-
lxmlis now the default selectors backend instead oflibxml2 -
将formRequest.from_response()移植到 lxml 而不是 ClientForm
-
删除的模块:
scrapy.xlib.BeautifulSoup和scrapy.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.jsonAPI到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)
-
重命名命令
start到runserver(209)
API更改¶
-
url和body请求对象的属性现在是只读的(230) -
Request.copy()和Request.replace()现在也复制他们的callback和errback属性(231) -
从``scrapy.contrib``中删除了``UrlFilterMiddleware``(默认情况下已禁用)
-
非现场Middelware不会过滤掉来自没有允许域属性的spider的任何请求(225)
-
删除蜘蛛管理器
load()方法。现在蜘蛛被装载在__init__方法本身。 -
- 对Scrapy Manager(现在称为“crawler”)的更改:
-
-
scrapy.core.manager.ScrapyManagerclass renamed toscrapy.crawler.Crawler -
scrapy.core.manager.scrapymanagersingleton moved toscrapy.project.crawler
-
-
移动模块:
scrapy.contrib.spidermanager到scrapy.spidermanager -
蜘蛛管理器单例从``scrapy.spider.spiders``移动到``scrapy.project.crawler``单例的``spiders`属性。
-
- 已移动的统计信息收集器类:(204)
-
-
scrapy.stats.collector.StatsCollectortoscrapy.statscol.StatsCollector -
scrapy.stats.collector.SimpledbStatsCollectortoscrapy.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_USER,MAIL_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.telnet到scrapy.telnet( r2047 )
更改为默认设置¶
-
更改的默认值
SCHEDULER_ORDER到DFO( 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_opened,domain_closed,domain_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_value,inc_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_TIMEOUTtoCLOSESPIDER_TIMEOUT -
CLOSEDOMAIN_ITEMCOUNTtoCLOSESPIDER_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 )
-
重命名的异常:
DontCloseDomain到DontCloseSpider( r1859 (120) -
重命名的扩展名:
DelayedCloseDomain到SpiderCloseDelay( 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在使用某些存储后端时仅在爬网完成后才开始项目传递 (S3 , FTP ,现在呢 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_curland
curl_to_request_kwargs()now also support
--data-raw(issue 4612) -
A
parsecallback may now be used in built-in spider subclasses, such
asCrawlSpider(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_curl和curl_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_curland
curl_to_request_kwargs()now also support
--data-raw(issue 4612) -
A
parsecallback may now be used in built-in spider subclasses, such
asCrawlSpider(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_curl和curl_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_receivedsignal 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 inRequest.cb_kwargsor
Request.metawhen persisting
scheduled requests (issue 4554) -
升级了 pickle protocol 从协议2到协议4的Scrapy使用,提高了序列化能力和性能 (issue 4135 , issue 4541 )
-
scrapy.utils.misc.create_instance()now raises aTypeError
exception if the resulting instance isNone(issue 4528,
issue 4532)
错误修复¶
-
CookiesMiddlewareno longer
discards cookies defined inRequest.headers(issue 1992, issue 2400) -
CookiesMiddlewareno longer
re-encodes cookies defined asbytesin thecookiesparameter
of the__init__method ofRequest
(issue 2400, issue 3575) -
什么时候?
FEEDS定义多个uri,FEED_STORE_EMPTY是False爬网不会产生任何项目,Scrapy在第一个URI之后不再停止feed导出 (issue 4621 , issue 4626 ) -
Spidercallbacks defined using coroutine
syntax no longer need to return an iterable, and may
instead return aRequestobject, an
item, orNone(issue 4609) -
这个
startproject命令现在确保生成的项目文件夹和文件具有正确的权限 (issue 4604 ) -
Fix a
KeyErrorexception 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.metakeys, 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 )
-
改进了
crawl和runspider命令 (issue 4548 , issue 4552 ) -
Replaced
chain(*iterable)withchain.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_receivedsignal 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 inRequest.cb_kwargsor
Request.metawhen persisting
scheduled requests (issue 4554) -
升级了 pickle protocol 从协议2到协议4的Scrapy使用,提高了序列化能力和性能 (issue 4135 , issue 4541 )
-
scrapy.utils.misc.create_instance()now raises aTypeError
exception if the resulting instance isNone(issue 4528,
issue 4532)
错误修复¶
-
CookiesMiddlewareno longer
discards cookies defined inRequest.headers(issue 1992, issue 2400) -
CookiesMiddlewareno longer
re-encodes cookies defined asbytesin thecookiesparameter
of the__init__method ofRequest
(issue 2400, issue 3575) -
什么时候?
FEEDS定义多个uri,FEED_STORE_EMPTY是False爬网不会产生任何项目,Scrapy在第一个URI之后不再停止feed导出 (issue 4621 , issue 4626 ) -
Spidercallbacks defined using coroutine
syntax no longer need to return an iterable, and may
instead return aRequestobject, an
item, orNone(issue 4609) -
这个
startproject命令现在确保生成的项目文件夹和文件具有正确的权限 (issue 4604 ) -
Fix a
KeyErrorexception 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.metakeys, 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 )
-
改进了
crawl和runspider命令 (issue 4548 , issue 4552 ) -
Replaced
chain(*iterable)withchain.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, andSiteNode
classes have been removed fromscrapy.utils.datatypes
(issue 4400)
贬抑¶
-
这个
FEED_FORMAT和FEED_URI设置已被弃用,取而代之的是FEEDS设置 (issue 1336 , issue 3858 , issue 4507 )
新特点¶
-
一个新的环境,
FEEDS,允许配置具有不同设置的多个输出源 (issue 1336 , issue 3858 , issue 4507 ) -
这个
crawl和runspider命令现在支持多个-o参数 (issue 1336 , issue 3858 , issue 4507 ) -
这个
crawl和runspider命令现在支持通过附加:<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 aDeferred(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 )
-
删除了有关导入的警告
StringTransport从twisted.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, andSiteNode
classes have been removed fromscrapy.utils.datatypes
(issue 4400)
贬抑¶
-
这个
FEED_FORMAT和FEED_URI设置已被弃用,取而代之的是FEEDS设置 (issue 1336 , issue 3858 , issue 4507 )
新特点¶
-
一个新的环境,
FEEDS,允许配置具有不同设置的多个输出源 (issue 1336 , issue 3858 , issue 4507 ) -
这个
crawl和runspider命令现在支持多个-o参数 (issue 1336 , issue 3858 , issue 4507 ) -
这个
crawl和runspider命令现在支持通过附加:<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 aDeferred(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 )
-
删除了有关导入的警告
StringTransport从twisted.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
reactorimports to prevent
errors about the wrong Twisted reactor being installed when setting a
different Twisted reactor usingTWISTED_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 include7z,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_settings或from_crawler类方法将此类参数公开给自定义下载处理程序。(issue 4126 )
-
-
我们已经重构了
scrapy.core.scheduler.Scheduler类和相关队列类(请参见SCHEDULER_PRIORITY_QUEUE,SCHEDULER_DISK_QUEUE和SCHEDULER_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 syntax 和 experimental support 对于
asyncio和asyncio-支持的库 (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.CertificateHTTPS响应的对象 (issue 2726 , issue 4054 ) -
一个新的
DNS_RESOLVER设置允许启用IPv6支持 (issue 1031 , issue 4227 ) -
一个新的
SCRAPER_SLOT_MAX_ACTIVE_SIZE设置允许配置现有的软限制,当正在处理的总响应数据太高时暂停请求下载 (issue 1410 , issue 3551 ) -
A new
TWISTED_REACTORsetting allows customizing the
reactorthat 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_crawlerorfrom_settings(issue 3884) -
The new
Response.cb_kwargs
attribute serves as a shortcut forResponse.request.cb_kwargs(issue 4331) -
Response.follownow supports a
flagsparameter, for consistency withRequest
(issue 4277, issue 4279) -
Item loader processors 现在可以是正则函数,它们不再需要是方法 (issue 3899 )
-
Rule现在接受一个errback参数 (issue 4000 ) -
Request不再需要callback当errback参数已指定 (issue 3586 , issue 4008 ) -
LogFormatter现在支持一些其他方法:-
download_error对于下载错误 -
item_errorfor exceptions
raised during item processing by item pipelines -
spider_errorfor 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__方法(如果需要),并访问kwargs在self._kwargs打电话给他们的父母之后__init__方法 (issue 4193 , issue 4370 ) -
一个新的
keep_fragments参数scrapy.utils.request.request_fingerprint()允许为URL中包含不同片段的请求生成不同的指纹 (issue 4104 ) -
下载处理程序(请参见
DOWNLOAD_HANDLERS)现在可以使用from_settings和from_crawler其他垃圾组件已经支持的类方法 (issue 4126 ) -
scrapy.utils.python.MutableChain.__iter__now returnsself,
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
ValueErrorexception raised when
scrapy.utils.misc.create_instance()gets bothsettingsand
crawlerset toNone(issue 4128)
文档¶
-
API文档现在链接到相应源代码的联机、语法突出显示视图 (issue 4148 )
-
链接到不存在的文档页现在允许访问侧栏 (issue 4152 , issue 4169 )
-
文档中的交叉引用现在在悬停时显示工具提示 (issue 4173 , issue 4183 )
-
Improved the documentation about
LinkExtractor.extract_linksand
simplified 链接提取器 (issue 4045) -
阐明了
ItemLoader.item作品 (issue 3574 , issue 4099 ) -
Clarified that
logging.basicConfig()should not be used when also
usingCrawlerProcess(issue 2149,
issue 2352, issue 3146, issue 3960) -
Clarified the requirements for
Requestobjects
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.rst和CODE_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_crawler或from_settings类方法:-
用于包含工厂函数的参数,
qfactory,现在作为名为的关键字参数传递downstream_queue_cls. -
添加了一个新的关键字参数:
key. 对于内存队列,它始终是空字符串,并指示JOB_DIR磁盘队列的值。 -
包含上一次爬网数据的磁盘队列的参数,
startprios或slot_startprios,现在作为名为的关键字参数传递startprios. -
这个
serialize不再传递参数。在写入磁盘之前,磁盘队列类必须自己处理请求序列化,使用request_to_dict()和request_from_dict()中的函数scrapy.utils.reqser模块。
-
以下更改可能会影响自定义磁盘和内存队列类:
-
签名
__init__方法现在__init__(self, crawler, key).
以下更改特别影响 ScrapyPriorityQueue 和 DownloaderAwarePriorityQueue 类来自 scrapy.core.scheduler 并可能影响子类:
-
在
__init__方法,则应用上述大多数更改。__init__仍然可以接收所有参数作为位置参数,但是:-
downstream_queue_cls,取代了qfactory,必须以不同的方式实例化。qfactory已用优先级值(整数)实例化。实例
downstream_queue_cls应该使用新的ScrapyPriorityQueue.qfactory或DownloaderAwarePriorityQueue.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 include7z,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_settings或from_crawler类方法将此类参数公开给自定义下载处理程序。(issue 4126 )
-
-
我们已经重构了
scrapy.core.scheduler.Scheduler类和相关队列类(请参见SCHEDULER_PRIORITY_QUEUE,SCHEDULER_DISK_QUEUE和SCHEDULER_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 syntax 和 experimental support 对于
asyncio和asyncio-支持的库 (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.CertificateHTTPS响应的对象 (issue 2726 , issue 4054 ) -
一个新的
DNS_RESOLVER设置允许启用IPv6支持 (issue 1031 , issue 4227 ) -
一个新的
SCRAPER_SLOT_MAX_ACTIVE_SIZE设置允许配置现有的软限制,当正在处理的总响应数据太高时暂停请求下载 (issue 1410 , issue 3551 ) -
A new
TWISTED_REACTORsetting allows customizing the
reactorthat 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_crawlerorfrom_settings(issue 3884) -
The new
Response.cb_kwargs
attribute serves as a shortcut forResponse.request.cb_kwargs(issue 4331) -
Response.follownow supports a
flagsparameter, for consistency withRequest
(issue 4277, issue 4279) -
Item loader processors 现在可以是正则函数,它们不再需要是方法 (issue 3899 )
-
Rule现在接受一个errback参数 (issue 4000 ) -
Request不再需要callback当errback参数已指定 (issue 3586 , issue 4008 ) -
LogFormatter现在支持一些其他方法:-
download_error对于下载错误 -
item_errorfor exceptions
raised during item processing by item pipelines -
spider_errorfor 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__方法(如果需要),并访问kwargs在self._kwargs打电话给他们的父母之后__init__方法 (issue 4193 , issue 4370 ) -
一个新的
keep_fragments参数scrapy.utils.request.request_fingerprint()允许为URL中包含不同片段的请求生成不同的指纹 (issue 4104 ) -
下载处理程序(请参见
DOWNLOAD_HANDLERS)现在可以使用from_settings和from_crawler其他垃圾组件已经支持的类方法 (issue 4126 ) -
scrapy.utils.python.MutableChain.__iter__now returnsself,
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
ValueErrorexception raised when
scrapy.utils.misc.create_instance()gets bothsettingsand
crawlerset toNone(issue 4128)
文档¶
-
API文档现在链接到相应源代码的联机、语法突出显示视图 (issue 4148 )
-
链接到不存在的文档页现在允许访问侧栏 (issue 4152 , issue 4169 )
-
文档中的交叉引用现在在悬停时显示工具提示 (issue 4173 , issue 4183 )
-
Improved the documentation about
LinkExtractor.extract_linksand
simplified 链接提取器 (issue 4045) -
阐明了
ItemLoader.item作品 (issue 3574 , issue 4099 ) -
Clarified that
logging.basicConfig()should not be used when also
usingCrawlerProcess(issue 2149,
issue 2352, issue 3146, issue 3960) -
Clarified the requirements for
Requestobjects
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.rst和CODE_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_crawler或from_settings类方法:-
用于包含工厂函数的参数,
qfactory,现在作为名为的关键字参数传递downstream_queue_cls. -
添加了一个新的关键字参数:
key. 对于内存队列,它始终是空字符串,并指示JOB_DIR磁盘队列的值。 -
包含上一次爬网数据的磁盘队列的参数,
startprios或slot_startprios,现在作为名为的关键字参数传递startprios. -
这个
serialize不再传递参数。在写入磁盘之前,磁盘队列类必须自己处理请求序列化,使用request_to_dict()和request_from_dict()中的函数scrapy.utils.reqser模块。
-
以下更改可能会影响自定义磁盘和内存队列类:
-
签名
__init__方法现在__init__(self, crawler, key).
以下更改特别影响 ScrapyPriorityQueue 和 DownloaderAwarePriorityQueue 类来自 scrapy.core.scheduler 并可能影响子类:
-
在
__init__方法,则应用上述大多数更改。__init__仍然可以接收所有参数作为位置参数,但是:-
downstream_queue_cls,取代了qfactory,必须以不同的方式实例化。qfactory已用优先级值(整数)实例化。实例
downstream_queue_cls应该使用新的ScrapyPriorityQueue.qfactory或DownloaderAwarePriorityQueue.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_PARSER和ROBOTSTXT_USER_AGENT设置 -
新的
DOWNLOADER_CLIENT_TLS_CIPHERS和DOWNLOADER_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_loggingandtls_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_curlclass
method allows creating a request from a cURL command (issue 2985, issue 3862) -
A new
ROBOTSTXT_PARSERsetting 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
(seeRequest.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 configuredLOG_FORMATTER
returnNone(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_pathand
ImagesPipeline.file_pathno 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
andPythonItemExporter(issue 3973) -
API documentation added for
BaseItemand
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_loggingandtls_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_curlclass
method allows creating a request from a cURL command (issue 2985, issue 3862) -
A new
ROBOTSTXT_PARSERsetting 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
(seeRequest.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 configuredLOG_FORMATTER
returnNone(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_pathand
ImagesPipeline.file_pathno 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
andPythonItemExporter(issue 3973) -
API documentation added for
BaseItemand
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因此。 -
Crawler,CrawlerRunner.crawl和CrawlerRunner.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_CHECKvariable is now set to thetruestring during runs
of thecheckcommand, 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 ) -
例外
ItemLoaderinput and output processors 现在更详细了 (issue 3836 , issue 3840 ) -
Crawler,CrawlerRunner.crawl和CrawlerRunner.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
Rulenow covers how to access
the text of a link when usingCrawlSpider
(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_path和ImagesPipeline.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.selector和scrapy.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因此。 -
Crawler,CrawlerRunner.crawl和CrawlerRunner.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_CHECKvariable is now set to thetruestring during runs
of thecheckcommand, 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 ) -
例外
ItemLoaderinput and output processors 现在更详细了 (issue 3836 , issue 3840 ) -
Crawler,CrawlerRunner.crawl和CrawlerRunner.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
Rulenow covers how to access
the text of a link when usingCrawlSpider
(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_path和ImagesPipeline.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.selector和scrapy.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_error和request_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.attrib 和 SelectorList.attrib 属性,这使得获取HTML元素的属性更加容易。见 选择元素属性 .
CSS选择器缓存在parsel>=1.5中,这使得在多次使用相同的css路径时更快。这是非常常见的情况下,剪贴蜘蛛:回调通常被称为多次,在不同的网页。
如果使用自定义 Selector 或 SelectorList 子类 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_URL,AWS_USE_SSL,AWS_VERIFY,AWS_REGION_NAME. 例如,这允许使用可选的或自托管的与AWS兼容的提供程序( issue 2609 , issue 3548 ) -
对谷歌云存储的ACL支持:
FILES_STORE_GCS_ACL和IMAGES_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.overrides和Settings.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.attrib 和 SelectorList.attrib 属性,这使得获取HTML元素的属性更加容易。见 选择元素属性 .
CSS选择器缓存在parsel>=1.5中,这使得在多次使用相同的css路径时更快。这是非常常见的情况下,剪贴蜘蛛:回调通常被称为多次,在不同的网页。
如果使用自定义 Selector 或 SelectorList 子类 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_URL,AWS_USE_SSL,AWS_VERIFY,AWS_REGION_NAME. 例如,这允许使用可选的或自托管的与AWS兼容的提供程序( issue 2609 , issue 3548 ) -
对谷歌云存储的ACL支持:
FILES_STORE_GCS_ACL和IMAGES_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.overrides和Settings.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
ptpythonREPL (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_WARNSIZE和DOWNLOAD_MAXSIZE限制(限制) issue 2927 ) -
当URL被放入时显示警告
Spider.allowed_domains而不是域( issue 2250 )
错误修复¶
-
修复由重写的设置的日志记录
custom_settings; this 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 ) -
添加
cryptographyfor 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
ptpythonREPL (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_WARNSIZE和DOWNLOAD_MAXSIZE限制(限制) issue 2927 ) -
当URL被放入时显示警告
Spider.allowed_domains而不是域( issue 2250 )
错误修复¶
-
修复由重写的设置的日志记录
custom_settings; this 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 ) -
添加
cryptographyfor 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_USER 和 FTP_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=Falsein
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/count,retry/max_reached和retry/reason_count/<reason>统计到RetryMiddleware( issue 2543 ) -
补充
httperror/response_ignored_count和httperror/response_ignored_status_count/<status>统计到HttpErrorMiddleware( issue 2566 ) -
可定制的
Referrer policyinRefererMiddleware( issue 2306 ) -
新的
data:URI下载处理程序器( issue 2334 修正 issue 2156 ) -
使用HTTP缓存时的日志缓存目录( issue 2611 修正 issue 2604 )
-
当项目包含重复的蜘蛛名称时警告用户(修复 issue 2181 )
-
scrapy.utils.datatypes.CaselessDict现在接受Mapping实例而不仅仅是dicts (issue 2646 ) -
Media downloads 用
FilesPipeline或ImagesPipeline,现在可以选择使用新的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: gzip在HttpCompressionMiddleware阶段(阶段) 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.errorexception 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_user和ftp_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=Falsein
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/count,retry/max_reached和retry/reason_count/<reason>统计到RetryMiddleware( issue 2543 ) -
补充
httperror/response_ignored_count和httperror/response_ignored_status_count/<status>统计到HttpErrorMiddleware( issue 2566 ) -
可定制的
Referrer policyinRefererMiddleware( issue 2306 ) -
新的
data:URI下载处理程序器( issue 2334 修正 issue 2156 ) -
使用HTTP缓存时的日志缓存目录( issue 2611 修正 issue 2604 )
-
当项目包含重复的蜘蛛名称时警告用户(修复 issue 2181 )
-
scrapy.utils.datatypes.CaselessDict现在接受Mapping实例而不仅仅是dicts (issue 2646 ) -
Media downloads 用
FilesPipeline或ImagesPipeline,现在可以选择使用新的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: gzip在HttpCompressionMiddleware阶段(阶段) 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.errorexception 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_user和ftp_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_MIDDLEWARES,DOWNLOADER_MIDDLEWARES,EXTENIONS和SPIDER_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_MIDDLEWARES,DOWNLOADER_MIDDLEWARES,EXTENIONS和SPIDER_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.client 和 twisted.internet.endpoints 直接。(另请参见下面的清理。)
由于这是一个重大的变化,我们希望在不破坏任何使用1.2系列的项目的情况下,快速修复bug。
新特点¶
-
``MailSender``现在接受单个字符串作为``to``和``cc``参数的值(:issue:2272)
-
scrapy fetch url,scrapy shell url和fetch(url)在Scrapy shell中,默认情况下遵循HTTP重定向 (issue 2290 见fetch和shell有关详细信息。 -
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 url,scrapy shell url和fetch(url)在Scrapy shell中,默认情况下遵循HTTP重定向 (issue 2290 见fetch和shell有关详细信息。 -
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"键入Request的metaDICT 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"键入Request的metaDICT 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工具时默认导入(shell, inspect_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()FPRStreamLogger避免日志中出现警告( 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工具时默认导入(shell, inspect_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()FPRStreamLogger避免日志中出现警告( 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)
文档¶
-
Overview 和 tutorial 重写以使用http://toscrape.com网站( issue 2236 , issue 2249 , issue 2252 )
错误修复¶
-
“ImagesPipeline”和“FilesPipeline”的子类的类属性与它们在1.1.1之前的作用相同(:issue:2243,fixes:issue:2198)
文档¶
-
Overview 和 tutorial 重写以使用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_STORE和HTTPCACHE_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 )如果您需要旧的行为,请添加
400到RETRY_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时(使用
FilesPipeline或ImagesPipeline)默认的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蜘蛛属性或Request的meta密钥(密钥) issue 1334 , issue 1364 , issue 1447 ) -
表格提交:
-
现在也可以使用``<button>``元素(:issue:1469)。
-
空字符串现在用于没有值的提交按钮( issue 1472 )
-
-
类似dict的设置现在具有每个键的优先级( issue 1135 , issue 1149 和 issue 1586 )
-
发送非ASCII电子邮件( issue 1662 )
-
CloseSpider和SpiderState如果没有设置相关设置,扩展现在将被禁用。( 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 ) -
FilesPipeline和ImagesPipeline设置现在是实例属性而不是类属性,启用特定于蜘蛛的行为( 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_bytes和to_unicode蔑视str_to_unicode和unicode_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蜘蛛属性或Request的meta密钥(密钥) issue 1334 , issue 1364 , issue 1447 ) -
表格提交:
-
现在也可以使用``<button>``元素(:issue:1469)。
-
空字符串现在用于没有值的提交按钮( issue 1472 )
-
-
类似dict的设置现在具有每个键的优先级( issue 1135 , issue 1149 和 issue 1586 )
-
发送非ASCII电子邮件( issue 1662 )
-
CloseSpider和SpiderState如果没有设置相关设置,扩展现在将被禁用。( 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 ) -
FilesPipeline和ImagesPipeline设置现在是实例属性而不是类属性,启用特定于蜘蛛的行为( 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_bytes和to_unicode蔑视str_to_unicode和unicode_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.contrib 和 scrapy.contrib_exp 到顶级包中。内部重新定位之间保持向后兼容性,而导入不推荐使用的模块时会收到指示其新位置的警告。
重新定位的完整列表¶
外包包
注解
这些扩展进行了一些小的更改,例如更改了一些设置名称。请检查每个新存储库中的文档以熟悉新用法。
|
老位置 |
新位置 |
|---|---|
|
scrapy.commands.deploy |
scrapyd-client (见其他备选方案: 部署蜘蛛 ) |
|
scrapy.contrib.djangoitem |
scrapy-djangoitem |
|
scrapy.webservice |
scrapy-jsonrpc |
scrapy.contrib_exp 和 scrapy.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.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.contrib 和 scrapy.contrib_exp 到顶级包中。内部重新定位之间保持向后兼容性,而导入不推荐使用的模块时会收到指示其新位置的警告。
重新定位的完整列表¶
外包包
注解
这些扩展进行了一些小的更改,例如更改了一些设置名称。请检查每个新存储库中的文档以熟悉新用法。
|
老位置 |
新位置 |
|---|---|
|
scrapy.commands.deploy |
scrapyd-client (见其他备选方案: 部署蜘蛛 ) |
|
scrapy.contrib.djangoitem |
scrapy-djangoitem |
|
scrapy.webservice |
scrapy-jsonrpc |
scrapy.contrib_exp 和 scrapy.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.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_exp 和 scrapy.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.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/filtered和offsite/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/filtered和offsite/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_STORAGE到scrapy.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_STORAGE到scrapy.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 更改
w3lib和queuelibpython包。 -
将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支持。
-
现在运行测试套件需要
mockpython库( 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 更改
w3lib和queuelibpython包。 -
将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支持。
-
现在运行测试套件需要
mockpython库( 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和-t到runspider命令 -
文件化的 AutoThrottle 扩展 并添加到默认安装的扩展。您仍然需要启用它
AUTOTHROTTLE_ENABLED -
主要统计数据收集重构:删除全局/每个蜘蛛统计数据的分离,删除与统计数据相关的信号(
stats_spider_opened等)。统计信息现在要简单得多,在统计信息收集器API和信号上保持向后兼容性。 -
补充
process_start_requests()蜘蛛中间商的方法 -
信号掉了。现在应该可以通过爬虫信号属性。有关更多信息,请参阅信号文档。
-
删除了统计收集器singleton。现在可以通过crawler.stats属性访问状态。有关详细信息,请参阅统计信息收集文档。
-
文件化的 核心API
-
lxmlis now the default selectors backend instead oflibxml2 -
将formRequest.from_response()移植到 lxml 而不是 ClientForm
-
删除的模块:
scrapy.xlib.BeautifulSoup和scrapy.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.jsonAPI到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.jsonAPI到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)
-
重命名命令
start到runserver(209)
API更改¶
-
url和body请求对象的属性现在是只读的(230) -
Request.copy()和Request.replace()现在也复制他们的callback和errback属性(231) -
从``scrapy.contrib``中删除了``UrlFilterMiddleware``(默认情况下已禁用)
-
非现场Middelware不会过滤掉来自没有允许域属性的spider的任何请求(225)
-
删除蜘蛛管理器
load()方法。现在蜘蛛被装载在__init__方法本身。 -
- 对Scrapy Manager(现在称为“crawler”)的更改:
-
-
scrapy.core.manager.ScrapyManagerclass renamed toscrapy.crawler.Crawler -
scrapy.core.manager.scrapymanagersingleton moved toscrapy.project.crawler
-
-
移动模块:
scrapy.contrib.spidermanager到scrapy.spidermanager -
蜘蛛管理器单例从``scrapy.spider.spiders``移动到``scrapy.project.crawler``单例的``spiders`属性。
-
- 已移动的统计信息收集器类:(204)
-
-
scrapy.stats.collector.StatsCollectortoscrapy.statscol.StatsCollector -
scrapy.stats.collector.SimpledbStatsCollectortoscrapy.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)
-
重命名命令
start到runserver(209)
API更改¶
-
url和body请求对象的属性现在是只读的(230) -
Request.copy()和Request.replace()现在也复制他们的callback和errback属性(231) -
从``scrapy.contrib``中删除了``UrlFilterMiddleware``(默认情况下已禁用)
-
非现场Middelware不会过滤掉来自没有允许域属性的spider的任何请求(225)
-
删除蜘蛛管理器
load()方法。现在蜘蛛被装载在__init__方法本身。 -
- 对Scrapy Manager(现在称为“crawler”)的更改:
-
-
scrapy.core.manager.ScrapyManagerclass renamed toscrapy.crawler.Crawler -
scrapy.core.manager.scrapymanagersingleton moved toscrapy.project.crawler
-
-
移动模块:
scrapy.contrib.spidermanager到scrapy.spidermanager -
蜘蛛管理器单例从``scrapy.spider.spiders``移动到``scrapy.project.crawler``单例的``spiders`属性。
-
- 已移动的统计信息收集器类:(204)
-
-
scrapy.stats.collector.StatsCollectortoscrapy.statscol.StatsCollector -
scrapy.stats.collector.SimpledbStatsCollectortoscrapy.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_USER,MAIL_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.telnet到scrapy.telnet( r2047 )
更改为默认设置¶
-
更改的默认值
SCHEDULER_ORDER到DFO( r1939 )
新功能和改进¶
-
向scrappy.mail添加了smtp-auth支持
-
添加的新设置:
MAIL_USER,MAIL_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.telnet到scrapy.telnet( r2047 )
更改为默认设置¶
-
更改的默认值
SCHEDULER_ORDER到DFO( 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_opened,domain_closed,domain_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_value,inc_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_TIMEOUTtoCLOSESPIDER_TIMEOUT -
CLOSEDOMAIN_ITEMCOUNTtoCLOSESPIDER_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 )
-
重命名的异常:
DontCloseDomain到DontCloseSpider( r1859 (120) -
重命名的扩展名:
DelayedCloseDomain到SpiderCloseDelay( 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_opened,domain_closed,domain_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_value,inc_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_TIMEOUTtoCLOSESPIDER_TIMEOUT -
CLOSEDOMAIN_ITEMCOUNTtoCLOSESPIDER_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 )
-
重命名的异常:
DontCloseDomain到DontCloseSpider( r1859 (120) -
重命名的扩展名:
DelayedCloseDomain到SpiderCloseDelay( r1861 (121) -
删除了过时的``scrapy.utils.markup.remove_escape_chars``函数 - 改用``scrapy.utils.markup.replace_escape_chars``(:rev:1865)
Scrapy 0.7¶
第一次发行的Scrapy。