发行说明¶
Srapy 2.5.1(2021-10-05)¶
安全错误修复:
如果您使用
HttpAuthMiddleware
(即http_user
和http_pass
Spider属性)对于HTTP身份验证,任何请求都会将您的凭据公开给请求目标。为了防止身份验证凭据意外暴露给非预期的域,您现在必须额外设置一个新的附加爬行器属性,
http_auth_domain
,并将其指向必须将身份验证凭据发送到的特定域。如果
http_auth_domain
未设置Spider属性,则第一个请求的域将被视为HTTP身份验证目标,并且身份验证凭据将仅在针对该域的请求中发送。如果需要向多个域发送相同的HTTP身份验证凭据,可以使用
w3lib.http.basic_auth_header()
而是设置Authorization
您的请求的标题。如果你 真的 要让爬行器向任何域发送相同的HTTP身份验证凭据,请将
http_auth_domain
蜘蛛属性为None
。最后,如果您是 scrapy-splash ,知道此版本的Scrapy破坏了与Scrapy-Splash 0.7.2及更早版本的兼容性。您需要将scrapy-spash升级到更高版本才能继续工作。
Srapy 2.5.0(2021-04-06)¶
亮点:
官方Python 3.9支持
实验性的 HTTP/2 support
新的
get_retry_request()
函数重试来自爬行器回调的请求新的
headers_received
允许提前停止下载的信号新的
Response.protocol
属性
折旧清除¶
删除了所有符合以下条件的代码 was deprecated in 1.7.0 并且还没有 already been removed in 2.4.0 。 (issue 4901 )
删除了对
SCRAPY_PICKLED_SETTINGS_TO_OVERRIDE
环境变量, deprecated in 1.8.0 。 (issue 4912 )
贬抑¶
这个
scrapy.utils.py36
模块现在已弃用,取而代之的是scrapy.utils.asyncgen
。 (issue 4900 )
新特点¶
实验性的 HTTP/2 support 通过新的下载处理程序,该下载处理程序可以分配给
https
协议中的DOWNLOAD_HANDLERS
设置。 (issue 1854 , issue 4769 , issue 5058 , issue 5059 , issue 5066 )新的
scrapy.downloadermiddlewares.retry.get_retry_request()
函数可以从爬行器回调或中间件中使用,以处理超出以下情况的请求重试RetryMiddleware
支撑。 (issue 3590 , issue 3685 , issue 4902 )新的
headers_received
Signal允许提前访问响应头,并允许 stopping downloads 。 (issue 1772 , issue 4897 )新的
Response.protocol
属性提供对标识用于下载响应的协议的字符串的访问。 (issue 4878 )Stats 现在包括以下条目,这些条目指示存储中的成功数和失败数 feeds ::
feedexport/success_count/<storage type> feedexport/failed_count/<storage type>
哪里
<storage type>
是提要存储后端类名称,例如FileFeedStorage
或FTPFeedStorage
。(issue 3947 , issue 4850 )
这个
UrlLengthMiddleware
蜘蛛中间件现在使用以下命令记录忽略的URLINFO
logging level 而不是DEBUG
,现在它包含以下条目 stats 要跟踪忽略的URL数量,请执行以下操作:urllength/request_ignored_count
(issue 5036 )
这个
HttpCompressionMiddleware
下载器中间件现在记录解压缩响应的数量和产生的字节总数::httpcompression/response_bytes httpcompression/response_count
(issue 4797 , issue 4799 )
错误修复¶
修复了PyPy上安装PyDispatcher和PyDispatcher的问题,这可能会阻止Scrapy工作,具体取决于导入的软件包。 (issue 4710 , issue 4814 )
当检查回调以检查它是否是也返回值的生成器时,如果回调的文档字符串的缩进小于以下代码,则不再引发异常。 (issue 4477 , issue 4935 )
这个 Content-Length 使用缺省的HTTP/1.1下载处理程序时,响应中不再省略标头(请参见
DOWNLOAD_HANDLERS
)。 (issue 5009 , issue 5034 , issue 5045 , issue 5057 , issue 5062 )设置
handle_httpstatus_all
请求元密钥至False
现在与完全不设置它具有相同的效果,而不是与将其设置为True
。 (issue 3851 , issue 4694 )
文档¶
将说明添加到 install Scrapy in Windows using pip 。 (issue 4715 , issue 4736 )
日志记录文档现在包括 additional ways to filter logs 。 (issue 4216 , issue 4257 , issue 4965 )
中介绍了如何处理允许的域的长列表。 FAQ 。 (issue 2263 , issue 3667 )
覆盖范围 scrapy-bench 在……里面 标杆管理 。 (issue 4996 , issue 5016 )
澄清了这一点 extension 实例是按Crawler创建的。 (issue 5014 )
修复了示例中的一些错误。 (issue 4829 , issue 4830 , issue 4907 , issue 4909 , issue 5008 )
修复了一些外部链接、打字错误等问题。 (issue 4892 , issue 4899 , issue 4936 , issue 4942 , issue 5005 , issue 5063 )
这个 list of Request.meta keys 现在按字母顺序排序。 (issue 5061 , issue 5065 )
更新了对ScrapingHub(现在称为Zyte)的引用。 (issue 4973 , issue 5072 )
在自述文件中添加了对贡献者的说明。 (issue 4956 )
减少了列表的上边距。 (issue 4974 )
质量保证¶
使Python 3.9支持正式生效 (issue 4757 , issue 4759 )
扩展的键入提示 (issue 4895 )
修复了扭曲API的弃用用法。 (issue 4940 , issue 4950 , issue 5073 )
让我们的测试用新的PIP解析器运行。 (issue 4710 , issue 4814 )
添加了测试以确保 coroutine support 是经过测试的。 (issue 4987 )
已从Travis CI迁移到GitHub操作。 (issue 4924 )
修复了配置项问题。 (issue 4986 , issue 5020 , issue 5022 , issue 5027 , issue 5052 , issue 5053 )
实现了代码重构、样式修复和清理。 (issue 4911 , issue 4982 , issue 5001 , issue 5002 , issue 5076 )
Srapy 2.4.1(2020-11-17)¶
固定的 feed exports 覆盖支持 (issue 4845 , issue 4857 , issue 4859 )
修复了可能导致代码挂起的AsyncIO事件循环处理 (issue 4855 , issue 4872 )
Fixed the IPv6-capable DNS resolver
CachingHostnameResolver
for download handlers that callreactor.resolve
(issue 4802, issue 4803)修复了
genspider
命令显示占位符,而不是生成的爬网模块的导入路径 (issue 4874 )已将Windows配置项从Azure管道迁移到GitHub操作 (issue 4869 , issue 4876 )
Scrapy 2.4.0(2020-10/11)¶
亮点:
已放弃对Python3.5的支持。
这个
file_path
一种方法 media pipelines 现在可以访问源代码 item 。这允许您根据项目数据设置下载文件路径。
新的
item_export_kwargs
的关键字FEEDS
设置允许定义要传递到的关键字参数 item exporter classes您现在可以选择是否 feed exports 覆盖或附加到输出文件。
例如,在使用
crawl
或runspider
命令,您可以使用-O
选项,而不是-o
若要覆盖输出文件,请执行以下操作。在以下情况下,现在支持Zstd压缩响应 zstandard 已安装。
在需要类的导入路径的设置中,现在可以改为传递类对象。
修改后的要求¶
现在需要Python 3.6或更高版本;已取消对Python 3.5的支持
因此:
使用PyPy时,PyPy 7.2.0或更高版本 is now required
中的Amazon S3存储支持 feed exports 或 media pipelines , botocore 现在需要1.4.87或更高版本
要使用 images pipeline , Pillow 现在需要4.0.0或更高版本
(issue 4718 , issue 4732 , issue 4733 , issue 4742 , issue 4743 , issue 4764 )
向后不兼容的更改¶
CookiesMiddleware
再次丢弃在中定义的CookieRequest.headers
。我们决定恢复Scrapy 2.2.0中引入的这个错误修复,因为据报道,当前的实现可能会破坏现有代码。
如果需要为请求设置cookie,请使用
Request.cookies
参数。Scrapy的未来版本将包括恢复的错误修复的新的、更好的实现。
(issue 4717 , issue 4823 )
折旧清除¶
scrapy.extensions.feedexport.S3FeedStorage
no longer reads the values ofaccess_key
andsecret_key
from the running project settings when they are not passed to its__init__
method; you must either pass those parameters to its__init__
method or useS3FeedStorage.from_crawler
(issue 4356, issue 4411, issue 4688)Rule.process_request
no longer admits callables which expect a singlerequest
parameter, rather than bothrequest
andresponse
(issue 4818)
贬抑¶
在海关中 media pipelines ,不接受仅关键字的签名
item
方法中的任何方法中都包含 now support this parameter 现在已弃用 (issue 4628 , issue 4686 )在海关中 feed storage backend classes ,
__init__
不接受仅关键字的方法签名feed_options
参数现在已弃用 (issue 547 , issue 716 , issue 4512 )这个
scrapy.utils.python.WeakKeyCache
类现在已弃用 (issue 4684 , issue 4701 )这个
scrapy.utils.boto.is_botocore()
函数现在已弃用,请使用scrapy.utils.boto.is_botocore_available()
取而代之的是 (issue 4734 , issue 4776 )
新特点¶
以下是执行以下操作的方法 media pipelines 现在接受一个
item
包含源的仅关键字参数 item :在……里面
scrapy.pipelines.files.FilesPipeline
:file_downloaded()
media_downloaded()
media_to_download()
在……里面
scrapy.pipelines.images.ImagesPipeline
:file_downloaded()
get_images()
image_downloaded()
media_downloaded()
media_to_download()
(issue 4628 , issue 4686 )
The new
item_export_kwargs
key of theFEEDS
setting allows to define keyword parameters to pass to item exporter classes (issue 4606, issue 4768)Feed exports 获得了覆盖支持:
您可以使用
overwrite
键入FEEDS
用于配置是否覆盖输出文件的设置 (True
)或附加到其内容 (False
)这个
__init__
和from_crawler
方法: feed storage backend classes 现在接收新的仅关键字参数,feed_options
,这是一本关于 feed options
(issue 547 , issue 716 , issue 4512 )
在以下情况下,现在支持Zstd压缩响应 zstandard 已安装 (issue 4831 )
在需要类的导入路径的设置中,现在可以改为传递类对象 (issue 3870 , issue 3873 )。
这还包括仅其值的一部分由导入路径构成的设置,例如
DOWNLOADER_MIDDLEWARES
或DOWNLOAD_HANDLERS
。Downloader middlewares 现在可以覆盖
response.request
。如果一个 downloader middleware 返回一个
Response
对象来自process_response()
或process_exception()
使用自定义的Request
分配给的对象response.request
:那个风俗习惯
Request
对象现在作为request
参数设置为response_received
信号,而不是原始的Request
对象
(issue 4529 , issue 4632 )
在使用 FTP feed storage backend :
现在可以将新的
overwrite
feed option 至False
追加到现有文件而不是覆盖它的步骤如果不需要,现在可以省略FTP密码
(issue 547 , issue 716 , issue 4512 )
这个
__init__
一种方法CsvItemExporter
现在支持errors
参数以指示如何处理编码错误。 (issue 4755 )When using asyncio, it is now possible to set a custom asyncio loop (issue 4306, issue 4414)
序列化请求(请参见 作业:暂停和恢复爬行 )现在支持作为蜘蛛方法的回调,这些方法委托其他可调用的 (issue 4756 )
当响应大于
DOWNLOAD_MAXSIZE
,则记录的消息现在是警告,而不是错误 (issue 3874 , issue 3886 , issue 4752 )
错误修复¶
这个
genspider
命令不再覆盖现有文件,除非--force
选项已使用 (issue 4561 , issue 4616 , issue 4623 )值为空的Cookie不再被视为无效Cookie (issue 4772 )
这个
runspider
命令现在支持具有.pyw
文件扩展名 (issue 4643 , issue 4646 )这个
HttpProxyMiddleware
中间件现在只需忽略不支持的代理值 (issue 3331 , issue 4778 )方法检查生成器回调。
return
语句不再就以下内容发出警告return
嵌套函数中的语句 (issue 4720 , issue 4721 )系统文件模式创建掩码不再影响使用
startproject
命令 (issue 4722 )scrapy.utils.iterators.xmliter()
现在支持命名空间节点名称 (issue 861 , issue 4746 )Request
对象现在可以具有about:
URL,可以在使用无头浏览器时工作 (issue 4835 )
文档¶
这个
FEED_URI_PARAMS
设置现已记录在案 (issue 4671 , issue 4724 )改进了以下项目的文档 link extractors 使用来自爬行器回调的用法示例和
Link
班级 (issue 4751 , issue 4775 )阐明了
CONCURRENT_REQUESTS
在使用CloseSpider
分机 (issue 4836 )删除了对Python 2的引用
unicode
类型 (issue 4547 , issue 4703 )We now have an official deprecation policy (issue 4705)
我们的 documentation policies 现在介绍狮身人面像的用法
versionadded
和versionchanged
指令,并且我们删除了引用Scrapy 1.4.0和更早版本的用法 (issue 3971 , issue 4310 )其他文档清理 (issue 4090 , issue 4782 , issue 4800 , issue 4801 , issue 4809 , issue 4816 , issue 4825 )
质量保证¶
扩展的键入提示 (issue 4243 , issue 4691 )
添加了对
check
命令 (issue 4663 )修复了Debian上的测试失败 (issue 4726 , issue 4727 , issue 4735 )
改进了Windows测试覆盖率 (issue 4723 )
切换到 formatted string literals 在可能的情况下 (issue 4307 , issue 4324 , issue 4672 )
现代化
super()
用法 (issue 4707 )其他代码和测试清理 (issue 1790 , issue 3288 , issue 4165 , issue 4564 , issue 4651 , issue 4714 , issue 4738 , issue 4745 , issue 4747 , issue 4761 , issue 4765 , issue 4804 , issue 4817 , issue 4820 , issue 4822 , issue 4839 )
刮痧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_curl
andcurl_to_request_kwargs()
now also support--data-raw
(issue 4612)A
parse
callback 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
允许取消响应下载的信号
向后不兼容的更改¶
Support for Python 3.5.0 and 3.5.1 has been dropped; Scrapy now refuses to run with a Python version lower than 3.5.2, which introduced
typing.Type
(issue 4615)
贬抑¶
TextResponse.body_as_unicode
现在已弃用,请使用TextResponse.text
相反 (issue 4546 , issue 4555 , issue 4579 )scrapy.item.BaseItem
现在已弃用,请使用scrapy.item.Item
相反 (issue 4534 )
新特点¶
dataclass objects and attrs objects are now valid item types, and a new itemadapter library makes it easy to write code that supports any item type (issue 2749, issue 2807, issue 3761, issue 3881, issue 4642)
一个新的
TextResponse.json
方法允许反序列化JSON响应 (issue 2444 , issue 4460 , issue 4574 )A new
bytes_received
signal allows monitoring response download progress and stopping downloads (issue 4205, issue 4559)的结果列表中的词典 media pipeline 现在包括一个新的密钥,
status
,指示文件是否已下载,如果未下载,则说明未下载的原因;请参阅FilesPipeline.get_media_requests
更多信息 (issue 2893 , issue 4486 )使用时 Google Cloud Storage 对于一个 media pipeline ,如果配置的凭据没有授予所需的权限,则现在会记录一个警告 (issue 4346 , issue 4508 )
Link extractors are now serializable, as long as you do not use lambdas for parameters; for example, you can now pass link extractors in
Request.cb_kwargs
orRequest.meta
when 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)
错误修复¶
CookiesMiddleware
no longer discards cookies defined inRequest.headers
(issue 1992, issue 2400)CookiesMiddleware
no longer re-encodes cookies defined asbytes
in thecookies
parameter of the__init__
method ofRequest
(issue 2400, issue 3575)什么时候?
FEEDS
定义多个uri,FEED_STORE_EMPTY
是False
爬网不会产生任何项目,Scrapy在第一个URI之后不再停止feed导出 (issue 4621 , issue 4626 )Spider
callbacks defined using coroutine syntax no longer need to return an iterable, and may instead return aRequest
object, an item, orNone
(issue 4609)这个
startproject
命令现在确保生成的项目文件夹和文件具有正确的权限 (issue 4604 )Fix a
KeyError
exception being sometimes raised fromscrapy.utils.datatypes.LocalWeakReferencedCache
(issue 4597, issue 4599)什么时候?
FEEDS
定义了多个uri,关于正在存储的项的日志消息现在包含来自相应提要的信息,而不是总是只包含一个提要的信息 (issue 4619 , issue 4629 )
文档¶
Added a new section about accessing cb_kwargs from errbacks (issue 4598, issue 4634)
Covered chompjs in 分析javascript代码 (issue 4556, issue 4562)
从中删除 协同程序 关于API正在试验的警告 (issue 4511 , issue 4513 )
Removed references to unsupported versions of Twisted (issue 4533)
Updated the description of the screenshot pipeline example, which now uses coroutine syntax instead of returning a
Deferred
(issue 4514, issue 4593)从中删除了一个误导性的导入行
scrapy.utils.log.configure_logging()
代码示例 (issue 4510 , issue 4587 )The display-on-hover behavior of internal documentation references now also covers links to commands,
Request.meta
keys, settings and signals (issue 4495, issue 4563)再次可以下载文档进行脱机阅读 (issue 4578 , issue 4585 )
删除前面的反斜杠
*args
和**kwargs
在某些函数和方法签名中 (issue 4592 , issue 4596 )
质量保证¶
Adjusted the code base further to our style guidelines (issue 4237, issue 4525, issue 4538, issue 4539, issue 4540, issue 4542, issue 4543, issue 4544, issue 4545, issue 4557, issue 4558, issue 4566, issue 4568, issue 4572)
删除了Python2支持的残余部分 (issue 4550 , issue 4553 , issue 4568 )
改进了
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 a
Deferred
(issue 4295, issue 4390)我们的PyPI条目现在包含了文档、源代码存储库和问题跟踪程序的链接 (issue 4456 )
覆盖了 curl2scrapy 文件中的服务 (issue 4206 , issue 4455 )
删除了对Guppy库的引用,该库只在python2中工作 (issue 4285 , issue 4343 )
扩展使用InterSphinx链接到python3文档 (issue 4444 , issue 4445 )
增加了对Sphinx3.0及更高版本的支持 (issue 4475 , issue 4480 , issue 4496 , issue 4503 )
质量保证¶
删除了有关使用旧的已删除设置的警告 (issue 4404 )
删除了有关导入的警告
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
reactor
imports 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支持已被删除
新的
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
, andxz
(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.Certificate
HTTPS响应的对象 (issue 2726 , issue 4054 )一个新的
DNS_RESOLVER
设置允许启用IPv6支持 (issue 1031 , issue 4227 )一个新的
SCRAPER_SLOT_MAX_ACTIVE_SIZE
设置允许配置现有的软限制,当正在处理的总响应数据太高时暂停请求下载 (issue 1410 , issue 3551 )A new
TWISTED_REACTOR
setting allows customizing thereactor
that Scrapy uses, allowing to enable asyncio support or deal with a common macOS issue (issue 2905, issue 4294)Scheduler disk and memory queues may now use the class methods
from_crawler
orfrom_settings
(issue 3884)The new
Response.cb_kwargs
attribute serves as a shortcut forResponse.request.cb_kwargs
(issue 4331)Response.follow
now supports aflags
parameter, 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_error
for exceptions raised during item processing by item pipelinesspider_error
for exceptions raised from spider callbacks
(issue 374 , issue 3986 , issue 3989 , issue 4176 , issue 4188 )
这个
FEED_URI
设置现在支持pathlib.Path
价值观 (issue 3731 , issue 4074 )一个新的
request_left_downloader
当请求离开下载程序时发送信号 (issue 4303 )Scrapy在检测到使用
yield
但也返回一个值,因为返回的值将丢失 (issue 3484 , issue 3869 )Spider
对象现在引发AttributeError
如果他们没有start_urls
属性或重新实现start_requests
,但是有一个start_url
属性 (issue 4133 , issue 4170 )BaseItemExporter
子类现在可以使用super().__init__(**kwargs)
而不是self._configure(kwargs)
在他们__init__
方法,通过dont_fail=True
给父母__init__
方法(如果需要),并访问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
ValueError
exception raised whenscrapy.utils.misc.create_instance()
gets bothsettings
andcrawler
set toNone
(issue 4128)
文档¶
API文档现在链接到相应源代码的联机、语法突出显示视图 (issue 4148 )
链接到不存在的文档页现在允许访问侧栏 (issue 4152 , issue 4169 )
文档中的交叉引用现在在悬停时显示工具提示 (issue 4173 , issue 4183 )
Improved the documentation about
LinkExtractor.extract_links
and simplified 链接提取器 (issue 4045)阐明了
ItemLoader.item
作品 (issue 3574 , issue 4099 )Clarified that
logging.basicConfig()
should not be used when also usingCrawlerProcess
(issue 2149, issue 2352, issue 3146, issue 3960)Clarified the requirements for
Request
objects when using persistence (issue 4124, issue 4139)Clarified how to install a custom image pipeline (issue 4034, issue 4252)
修复了
file_path
方法在 media pipeline 实例 (issue 4290 )涵盖了一个影响自定义的Scrapy 1.7.0中向后不兼容的更改
scrapy.core.scheduler.Scheduler
子类 (issue 4274 )改进了
README.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 )
Srapy 1.8.1(2021-10-05)¶
安全错误修复:
如果您使用
HttpAuthMiddleware
(即http_user
和http_pass
Spider属性)对于HTTP身份验证,任何请求都会将您的凭据公开给请求目标。为了防止身份验证凭据意外暴露给非预期的域,您现在必须额外设置一个新的附加爬行器属性,
http_auth_domain
,并将其指向必须将身份验证凭据发送到的特定域。如果
http_auth_domain
未设置Spider属性,则第一个请求的域将被视为HTTP身份验证目标,并且身份验证凭据将仅在针对该域的请求中发送。如果需要向多个域发送相同的HTTP身份验证凭据,可以使用
w3lib.http.basic_auth_header()
而是设置Authorization
您的请求的标题。如果你 真的 要让爬行器向任何域发送相同的HTTP身份验证凭据,请将
http_auth_domain
蜘蛛属性为None
。最后,如果您是 scrapy-splash ,知道此版本的Scrapy破坏了与Scrapy-Splash 0.7.2及更早版本的兼容性。您需要将scrapy-spash升级到更高版本才能继续工作。
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_logging
andtls_ciphers
(issue 2111, issue 3392, issue 3442, issue 3450)ItemLoader
它的输入值现在变成了:>>> item = MyItem() >>> item['field'] = 'value1' >>> loader = ItemLoader(item=item) >>> item['field'] ['value1']
这是允许向现有字段添加值所必需的 (
loader.add_value('field', 'value2')
)(issue 3804 , issue 3819 , issue 3897 , issue 3976 , issue 3998 , issue 4036 )
也见 折旧清除 下面。
新特点¶
A new
Request.from_curl
class method allows creating a request from a cURL command (issue 2985, issue 3862)A new
ROBOTSTXT_PARSER
setting allows choosing which robots.txt parser to use. It includes built-in support for RobotFileParser, Protego (default), Reppy, and Robotexclusionrulesparser, and allows you to implement support for additional parsers (issue 754, issue 2669, issue 3796, issue 3935, issue 3969, issue 4006)一个新的
ROBOTSTXT_USER_AGENT
设置允许定义要用于的单独的用户代理字符串 robots.txt 解析 (issue 3931 , issue 3966 )Rule
不再需要LinkExtractor
参数 (issue 781 , issue 4016 )使用新的
DOWNLOADER_CLIENT_TLS_CIPHERS
设置以自定义默认HTTP/1.1下载程序使用的TLS/SSL密码 (issue 3392 , issue 3442 )设置新的
DOWNLOADER_CLIENT_TLS_VERBOSE_LOGGING
设置为True
在建立HTTPS连接后启用有关TLS连接参数的调试级别消息 (issue 2111 , issue 3450 )Callbacks that receive keyword arguments (see
Request.cb_kwargs
) can now be tested using the new@cb_kwargs
spider contract (issue 3985, issue 3988)当A
@scrapes
蜘蛛合同失败,所有丢失的字段现在报告 (issue 766 , issue 3939 )Custom log formats can now drop messages by having the corresponding methods of the configured
LOG_FORMATTER
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_path
andImagesPipeline.file_path
no longer choose file extensions that are not registered with IANA (issue 1287, issue 3953, issue 3954)使用时 botocore 为了在S3中持久化文件,所有支持botocore的头现在都被正确地映射了 (issue 3904 , issue 3905 )
FTP密码
FEED_URI
包含百分比转义字符的字符现在已正确解码 (issue 3941 )中的内存处理和错误处理问题
scrapy.utils.ssl.get_temp_key_info()
已修复 (issue 3920 )
文档¶
The documentation now covers how to define and configure a custom log format (issue 3616, issue 3660)
API documentation added for
MarshalItemExporter
andPythonItemExporter
(issue 3973)API documentation added for
BaseItem
andItemMeta
(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 )
其他变化¶
持续集成测试所涵盖的可选废料需求的最低版本已更新:
但这些要求的可选版本不一定有效 (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_CHECK
variable is now set to thetrue
string during runs of thecheck
command, which allows detecting contract check runs from code (issue 3704, issue 3739)A new
Item.deepcopy()
method makes it easier to deep-copy items (issue 1493, issue 3671)CoreStats
同时记录elapsed_time_seconds
现在 (issue 3638 )例外
ItemLoader
input and output processors 现在更详细了 (issue 3836 , issue 3840 )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
Rule
now 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
:从
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
ptpython
REPL (issue 2654)Google云存储支持文件管道和图像管道( issue 2923 )
新的
--meta
“scrapy parse”命令的选项允许传递附加请求。( issue 2883 )使用时填充spider变量
shell.inspect_response
( issue 2812 )处理HTTP 308永久重定向( issue 2844 )
将522和524添加到
RETRY_HTTP_CODES
( issue 2851 )启动时记录版本信息( issue 2857 )
scrapy.mail.MailSender
现在在python 3中工作(它需要Twisted17.9.0)重新使用与代理服务器的连接( issue 2743 )
为下载器中间件添加模板( issue 2755 )
未定义分析回调时NotImplementedError的显式消息( issue 2831 )
CrawlerProcess有一个选项可以禁用安装根日志处理程序( issue 2921 )
Linkextractor现在忽略
m4v
默认情况下的扩展更好地记录响应消息
DOWNLOAD_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 )添加
cryptography
for Debian Jessie tox test env (issue 2848)添加验证以检查请求回调是否可调用( issue 2766 )
端口
extras/qpsclient.py
到Python 3(Python) issue 2849 )在python 3的场景下使用getfullargspec来停止取消预测警告( issue 2862 )
更新不推荐使用的测试别名( issue 2876 )
固定
SitemapSpider
支持备用链接( issue 2853 )
文档¶
为添加了缺少的项目符号点
AUTOTHROTTLE_TARGET_CONCURRENCY
设置。( issue 2756 )更新贡献文档,记录新的支持渠道( issue 2762 ,问题:“3038”
在文档中包含对Scrapy Subreddit的引用
修复断开的链接;对外部链接使用https://( issue 2978 , issue 2982 , issue 2958 )
文档CloseSpider扩展更好( issue 2759 )
在MongoDB示例中( issue 2781 )使用
pymongo.collection.Collection.insert_one()
拼写错误和打字错误( issue 2828 , issue 2837 , issue 2884 , issue 2924 )
澄清
CSVFeedSpider.headers
文件编制( issue 2826 )文件
DontCloseSpider
例外和澄清spider_idle
( issue 2791 )更新自述文件中的“releases”部分( issue 2764 )
修正RST语法
DOWNLOAD_FAIL_ON_DATALOSS
文档库 issue 2763 )StartProject参数描述中的小修复( issue 2866 )
在response.body文档中澄清数据类型( issue 2922 )
添加有关的注释
request.meta['depth']
到DepthmIddleware文档( issue 2374 )添加有关的注释
request.meta['dont_merge_cookies']
to CookiesMiddleware docs (issue 2999)最新的项目结构示例( issue 2964 , issue 2976 )
Itemexporters用法的更好示例( issue 2989 )
文件
from_crawler
蜘蛛和下载者中间商的方法( issue 3019 )
Scrapy 1.4.0(2017-05-18)¶
Scrapy1.4并没有带来那么多惊人的新功能,但还是有相当多的便利改进。
Scrappy现在支持匿名ftp会话,通过新的 FTP_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=False
inscrapy.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 policy
inRefererMiddleware
( 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.error
exception inscrapy.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)。
Enforce numeric values for components order in
SPIDER_MIDDLEWARES
,DOWNLOADER_MIDDLEWARES
,EXTENSIONS
andSPIDER_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
的meta
DICT issue 2033 )从目录中删除Ubuntu包上的页面(已弃用且不受支持)( issue 2335 )
一些固定的拼写错误(:issue:2346,:issue:2369,:issue:2369,:issue:2380)和澄清(:issue:2354,:issue:2325,:问题:2414)
其他变化¶
广告`conda-forge`_作为Scrapy的官方conda频道(:issue:2387)
尝试使用时出现更多有用的错误消息
.css()
或.xpath()
关于非文本响应( issue 2264 )startproject
命令现在生成一个示例middlewares.py
文件(文件) issue 2335 )在``scrapy version`` verbose output(:issue:2404)中添加更多依赖项的版本信息
全部删除
*.pyc
源分发中的文件( issue 2386 )
Scrapy 1.2.1(2016-10-21)¶
错误修复¶
在建立TLS/SSL连接时包括OpenSSL更为允许的默认密码( issue 2314 )
修复非ASCII URL重定向上的“位置”HTTP头解码( issue 2321 )
文档¶
修复jsonWriterPipeline示例( issue 2302 )
各种注释: issue 2330 关于蜘蛛的名字, issue 2329 在中间件方法处理顺序上, issue 2327 以列表形式获取多值HTTP头。
其他变化¶
从内置蜘蛛模板中的``start_urls``中删除了``www``(:issue:2299)。
Scrapy 1.2.0(2016-10-03)¶
新特点¶
新的
FEED_EXPORT_ENCODING
用于自定义将项写入文件时使用的编码的设置。可用于关闭\uXXXX
在JSON输出中进行转义。这对于那些希望XML或CSV输出使用UTF-8以外的东西的人也很有用。( issue 2034 )startproject
命令现在支持一个可选的目标目录,以根据项目名称覆盖默认目录。( issue 2005 )新的
SCHEDULER_DEBUG
设置为日志请求序列化失败( issue 1610 )JSON编码器现在支持序列化
set
实例(实例) issue 2058 )将``application / json-amazonui-streaming``解释为``TextResponse``(:issue:1503)。
scrapy
在使用shell工具时默认导入(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()
为StreamLogger
避免日志中的警告 (issue 2125 )。
重构¶
canonicalize_url
已移至 w3lib.url (issue 2168) .
测试和要求¶
Scrapy的新需求基线是Debian8“Jessie”。它以前是Ubuntu12.04精确版。实际上,这意味着我们至少要用这些(主要)包版本运行连续集成测试:twisted 14.0、pyopenssl 0.14、lxml 3.4。
Scrapy可以很好地处理这些包的旧版本(例如,代码库中仍然有用于旧的扭曲版本的开关),但不能保证(因为它不再被测试)。
文档¶
语法修正: issue 2128 , issue 1566 .
从自述文件中删除“下载状态”徽章( issue 2160 )
New Scrapy architecture diagram (issue 2165).
更新的
Response
参数文档( issue 2197 )重新误导:设置:RANDOMIZE_DOWNLOAD_DELAY description(:issue:2190)。
添加stackoverflow作为支持通道( issue 2257 )
Scrapy 1.1.4(2017-03-03)¶
打包修复:禁止在setup.py中支持不受支持的Twisted版本
Scrapy 1.1.3(2016-09-22)¶
错误修复¶
“ImagesPipeline”和“FilesPipeline”的子类的类属性与它们在1.1.1之前的作用相同(:issue:2243,fixes:issue:2198)
文档¶
Overview 和 tutorial 重写以使用http://toscrape.com网站( issue 2236 , issue 2249 , issue 2252 )
Scrapy 1.1.2(2016-08-18)¶
错误修复¶
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.webservice |
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 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)¶
增强功能¶
添加新的基于lxml的LinkExtractor以替换未维护的SgmlLinkExtractor (issue 559 , issue 761 , issue 763 )
清理设置API-每个蜘蛛设置的一部分 GSoC project ( issue 737 )
Telnet控制台现在默认绑定到127.0.0.1( issue 699 )
禁用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 )
允许像禁用任何其他组件一样禁用下载程序处理程序( issue 650 )
在重定向过多后放弃请求时记录( issue 654 )
使用来自ppa的最新pypi运行pypypy测试( issue 674 )
使用pytest而不是trial运行测试套件( issue 679 )
建立文档并检查毒物环境中的死链接( issue 687 )
在中支持不区分大小写的域
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 )文件
spider.closed()
快捷方式(捷径” issue 719 )文件
request_scheduled
信号(信号) issue 746 )添加有关报告安全问题的说明( issue 697 )
排序蜘蛛列表输出
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 )
处理由inspect.stack()失败引起的错误( issue 582 )
修复类型()的动态项类示例用法( 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
添加一个中间件来对由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 )
修复中的重写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发布)¶
增强功能¶
请求/响应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 )
建议用枕头代替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
和queuelib
python包。将PYPY 2.1添加到持续集成测试中( commit ecfa7431 )
将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)
修复setup.py中的无效变量名( issue 429 )
修复教程引用( issue 387 )
改进请求响应文档( issue 391 )
改进Django集成文档( issue 404 )
文件
bindaddress
请求元 commit 37c24e01d7 )改进
Request
类文档( issue 226 )
其他¶
谢谢¶
感谢所有为这次发布做出贡献的人!
按提交次数排序的参与者列表:
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 )
支持上的XPath表单选择
FormRequest.from_response
( issue 185 )修正上的Unicode解码错误
SgmlLinkExtractor
( issue 199 )Pypi解释器上的错误修复信号调度( issue 205 )
改进请求延迟和并发处理( issue 206 )
将rfc2616缓存策略添加到
HttpCacheMiddleware
( issue 212 )允许自定义引擎记录的消息( issue 214 )
使用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
lxml
is 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¶
新功能和设置¶
在磁盘上存储请求的新的永久性计划程序,允许挂起和恢复爬网( r2737 )
在``scrapy crawl``中添加了``-o``选项,这是将已删除项目转储到文件中的快捷方式(或使用``-``标准输出)
添加了对自定义设置传递给Scrapyd``recation.json`` api(:rev:2779,:rev:2783)的支持
新的
ChunkedTransferMiddleware
(默认启用)以支持 chunked transfer encoding (r2769)添加对S3下载器处理程序的boto 2.0支持( r2763 )
在请求错误回复中,有问题的请求现在接收到
failure.request
属性(属性) r2738 )- 大下载重构以支持每个域/IP并发限制( r2732 )
CONCURRENT_REQUESTS_PER_SPIDER
设置已被弃用,并替换为:
查看文档了解更多详细信息
添加了内置缓存DNS解析程序( r2728 )
将与Amazon AWS相关的组件/扩展(sqs spider queue,simpledb stats collector)移动到单独的项目:[scaws](https://github.com/scrapinghub/scaws)( r2706 , r2714 )
已将spider队列移动到scrapyd:
scrapy.spiderqueue
>scrapyd.spiderqueue
( r2708 )已将sqlite utils移动到scrapyd:
scrapy.utils.sqlite
>scrapyd.sqlite
( r2781 )对返回迭代器的真正支持
start_requests()
方法。当蜘蛛空闲时,迭代器现在在爬行过程中被消耗。( r2704 )补充
REDIRECT_ENABLED
快速启用/禁用重定向中间件的设置( r2697 )补充
RETRY_ENABLED
设置为快速启用/禁用重试中间件( r2694 )补充
CloseSpider
手动关闭星形齿轮的例外情况( r2691 )通过添加对HTML5元字符集声明的支持来改进编码检测( r2690 )
重构CloseSpider行为,等待所有下载完成并由Spider处理,然后关闭Spider( r2688 )
补充
SitemapSpider
(见Spiders页面中的文档)( r2658 )补充
LogStats
用于定期记录基本统计信息(如已爬网页和已擦除项)的扩展( r2657 )使gzipped响应的处理更加可靠(319, r2643 )现在,scrappy将尝试尽可能多地从gzip响应中解压缩,而不是使用
IOError
.简化!memoryDebugger扩展,用于转储内存调试信息( r2639 )
添加了编辑蜘蛛的新命令:
scrapy edit``(:rev:`2636`)和
-e``标志到``genspider``命令使用它(:rev:2653)将项目的默认表示更改为精美打印的dicts。(启:2631)。 对于Scraped和Dropped行,在默认情况下使日志更具可读性,从而改进了默认日志记录。
补充
spider_error
信号(信号) r2628 )补充:设置:COOKIES_ENABLED`设置(:rev:`2625)
现在,Stats被转储到Scrapy日志中(默认值:setting:`STATS_DUMP`设置已更改为“True”。)。 这是为了让Scrapy用户更加了解Scrapy统计数据以及在那里收集的数据。
增加了对动态调整下载延迟和最大并发请求的支持( r2599 )
添加了新的DBM HTTP缓存存储后端( r2576 )
补充
listjobs.json
API到ScrapyDy( r2571 )CsvItemExporter
:添加了``join_multivalued``参数(:rev:2578)为``xmliter_lxml``添加名称空间支持(:rev:2552)
改进了cookies中间件
COOKIES_DEBUG
更好的记录它( r2579 )对Scrapyd和Link提取器的一些改进
重新排列和删除代码¶
- 合并的项传递和项抓取概念,因为它们在过去常常被证明是混淆的。这意味着: r2630 )
原始item_scraped信号已被删除
原始item_passed信号已重命名为item_scraped
旧的日志行``Scraped Item ...``被删除了
旧的日志行``通过的项目......``被重命名为``Scraped Item ...``行并降级为``DEBUG``级别
- 通过将部分废弃代码分为两个新库来减少废弃代码库:
w3lib`_(来自``scrapy.utils。{http,markup,multipart,response,url}``的几个函数,完成于:rev:`2584)
scrapely`_(是``scrapy.contrib.ibl`,完成于:rev:2586)
删除了未使用的功能:
scrapy.utils.request.request_info()
( r2577 )已从中删除googledir项目
examples/googledir
. 现在有一个新的示例项目叫做dirbot
在GitHub上提供:https://github.com/scray/dirbot删除了对Scrapy项目中默认字段值的支持(:rev:2616)
删除了实验crawlspider v2(:rev:2632)
删除了调度程序中间件以简化体系结构。重复过滤器现在在调度程序本身中完成,使用与以前相同的重复过滤类。(
DUPEFILTER_CLASS
设置) r2640 )已删除对将URL传递到的支持
scrapy crawl
命令(使用)scrapy parse
取而代之的是) r2704 )已删除不推荐使用的执行队列( r2704 )
已删除(未记录)spider上下文扩展(来自scrapy.contrib.spiderContext)( r2780 )
删除``CONCURRENT_SPIDERS``设置(改用scrapyd maxproc)(:rev:2789)
重命名核心组件的属性:downloader.sites - > downloader.slots,scraper.sites - > scraper.slots(:rev:2717,:rev:2718)
将设置``CLOSESPIDER_ITEMPASSED``重命名为:setting:CLOSESPIDER_ITEMCOUNT`(:rev:`2655)。 保持向后兼容性。
Scrapy 0.12¶
旧问题追踪器(trac)中的nnn参考票等数字不再可用。
新功能和改进¶
传递的项现在发送到
item
论证item_passed
(273)向添加了详细选项
scrapy version
命令,用于错误报告(298)HTTP缓存现在默认存储在项目数据目录中(279)
增加了项目数据存储目录(276,277)
Scrapy 项目的文档结构(见命令行工具文档)
XPath选择器的新lxml后端(147)
每个蜘蛛设置(245)
支持退出代码,以在scrapy命令中发出错误信号(248)
补充
-c
参数scrapy shell
命令制造
libxml2
可选择的(第260)新的
deploy
命令(第261)补充
CLOSESPIDER_PAGECOUNT
设置(α253)补充
CLOSESPIDER_ERRORCOUNT
设置(α254)
抓取变化¶
ScrapyD现在每个蜘蛛使用一个进程
它为每个爬行器运行存储一个日志文件,并轮换它们以保存每个爬行器的最新5个日志(默认情况下)
添加了一个最小的Web UI,默认情况下可从http://localhost:6800获得
现在有一个
scrapy server
启动当前项目的ScrapyD服务器的命令
对设置的更改¶
补充
HTTPCACHE_ENABLED
设置(默认为false)以启用HTTP缓存中间件改变
HTTPCACHE_EXPIRATION_SECS
语义:现在零意味着“永不过期”。
弃用/废弃功能¶
已弃用
runserver
有利于…的命令server
启动ScrapyD服务器的命令。另请参见:ScrapyD更改已弃用
queue
有利于使用ScrapyD的命令schedule.json
应用程序编程接口。另请参见:ScrapyD更改移除了!lxmlitemloader(从未升级到主控件的实验控件)
Scrapy 0.10¶
旧问题追踪器(trac)中的nnn参考票等数字不再可用。
新功能和改进¶
新的Scrapy服务称为``scrapyd``,用于在生产中部署Scrapy爬虫(#218)(可用文档)
简化的图像管道使用,现在无需对自己的图像管道进行子类化(217)
Scrapy Shell现在默认显示Scrapy日志(206)
重构公共基本代码中的执行队列和称为“spider队列”的可插拔后端(220)
新的持久蜘蛛队列(基于sqlite)(198),默认情况下可用,允许在服务器模式下启动scrappy,然后安排蜘蛛运行。
添加了scrapy命令行工具及其所有可用子命令的文档。(提供文件)
具有可插拔后端的Feed exporters(197)(提供文档)
延迟信号(193)
向item pipeline open_spider()添加了两个新方法,使用延迟支持关闭_spider()(195)
支持覆盖每个spider的默认请求头(181)
将默认的spider管理器替换为具有类似功能但不依赖于双绞线插件的管理器(186)
将Debian包拆分为两个包-库和服务(#187)
Scrapy日志重构(#188)
在不同的运行中保持持久的蜘蛛上下文的新扩展(203)
补充
dont_redirect
避免重定向的request.meta键(233)补充
dont_retry
用于避免重试的request.meta密钥(234)
命令行工具更改¶
新的
scrapy
替换旧命令的命令scrapy-ctl.py
(199)-只有一个全局scrapy
现在命令,而不是一个scrapy-ctl.py
每个项目-已添加scrapy.bat
用于从Windows更方便地运行的脚本将bash完成添加到命令行工具(210)
重命名命令
start
到runserver
(209)
API更改¶
url
和body
请求对象的属性现在是只读的(230)Request.copy()
和Request.replace()
现在也复制他们的callback
和errback
属性(231)从``scrapy.contrib``中删除了``UrlFilterMiddleware``(默认情况下已禁用)
非现场中间件不会过滤发出任何来自没有ALLOW_DOMAINS属性的爬行器的请求(#225)
删除蜘蛛管理器
load()
方法。现在蜘蛛被装载在__init__
方法本身。- 对Scrapy Manager(现在称为“crawler”)的更改:
scrapy.core.manager.ScrapyManager
class renamed toscrapy.crawler.Crawler
scrapy.core.manager.scrapymanager
singleton moved toscrapy.project.crawler
移动模块:
scrapy.contrib.spidermanager
到scrapy.spidermanager
蜘蛛管理器单例从``scrapy.spider.spiders``移动到``scrapy.project.crawler``单例的``spiders`属性。
- 已移动的统计信息收集器类:(204)
scrapy.stats.collector.StatsCollector
toscrapy.statscol.StatsCollector
scrapy.stats.collector.SimpledbStatsCollector
toscrapy.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 )
补充
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)补充
ExecutionQueue
用来喂蜘蛛( r2034 )删除了``ExecutionEngine`` singleton(:rev:2039)
端口
S3ImagesStore
(图像管道)使用boto和线程( r2033 )移动模块:
scrapy.management.telnet
到scrapy.telnet
( r2047 )
更改为默认设置¶
更改的默认值
SCHEDULER_ORDER
到DFO
( r1939 )
Scrapy 0.8¶
旧问题追踪器(trac)中的nnn参考票等数字不再可用。
新特点¶
向后不兼容的更改¶
改变
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_TIMEOUT
toCLOSESPIDER_TIMEOUT
CLOSEDOMAIN_ITEMCOUNT
toCLOSESPIDER_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。