Changelog
0.12.0 (2019-08-10)
- 移除爬虫工程初始化相关功能,推荐使用单文件spider或指定爬虫启动脚本
- 统一middleware、pipeline、extension等概念,统一由
extensions
配置爬虫的拓展
0.11.2 (2019-08-06)
- 重构Chrome渲染器,由每次新建Chrome进程变为维护每个Chrome进程的tab
- 添加
chrome_renderer_options
配置项,实现同时运行多个具有不同设置的Chrome渲染器
- 修复爬虫工程的配置模版
0.11.1 (2019-07-29)
- 移除
HttpRequest
中的 params
属性,但在构建 HttpRequest
时依然可以传入 params
0.11.0 (2019-07-11)
- 移除对aiohttp的依赖,改由tornado实现HTTP请求,新增pycurl依赖
- 添加基于Selenium和Chrome driver的渲染器
- 添加Docker镜像
jadbin/xpaw
,便于构建爬虫运行环境
- 暂时移除对cookies和cookie jar的支持
- 组件cluster更名为crawler,包含cluster命名的模块、对象、函数、配置等均作出了相应的替换
- 运行爬虫工程的
run_crawler
接口更名为 run_spider_project
- 非2xx的HttpResponse将视为请求失败并抛出
HttpError
异常进入错误处理流程
- RetryMiddleware不再raise IgnoreRequest,即因达到重试次数上限而导致请求失败时不再封装为IgnoreRequest,将保留原有的HttpResponse或异常
- HttpRequest
proxy
, timeout
, verify_ssl
, allow_redirects
, auth
, proxy_auth
由在 meta
中配置改为直接作为HttpRequest的属性
- Selector之前在遇到异常时会返回空数组,现在改为直接抛出异常
- 修改ProxyMiddleware的配置格式
- 移除ImitatingProxyMiddleware
- 修改SpeedLimitMiddleware的配置格式
- 移除 config.py 中的
downloader_timeout
, verify_ssl
, allow_redirects
配置项
- 移除
xpaw.FormData
, xpaw.URL
- 移除
xpaw.MultiDict
, xpaw.CIMultiDict
, 改由 xpaw.HttpHeaders
替代承载headers的功能
- 移除请求超时错误TimeoutError,统一由ClientError表示downloader抛出的异常
default_headers
默认为 None
, 浏览器默认的HTTP header改由UserAgentMiddleware根据设定的浏览器类型进行设置
xpaw.downloadermws
模块更名为 xpaw.downloader_middlewares
, xpaw.spidermws
模块更名为 xpaw.spider_middlewares
@every
装饰器移至 xpaw.decorator
模块
- 移除对
dump_dir
的支持
0.10.4 (2018-11-06)
- 在生成初始请求过程中,捕获单个请求抛出的异常并记录日志
0.10.3 (2018-09-01)
- ProxyMiddleware不会覆盖用户在HttpRequest
meta
中设置的 proxy
- CookiesMiddleware不会覆盖用户在HttpRequest
meta
中设置的 cookie_jar
- NetworkError更名为ClientError,同时请求超时改由TimeoutError表示
0.10.2 (2018-08-28)
- Field添加
type
参数,表示该字段的类型,在获取该字段的值时会进行类型转换
- 添加
allow_redirects
配置项,控制是否允许重定向,默认为 True
- HttpRequest
meta
添加 verify_ssl
和 allow_redirects
字段,用于精确控制单次请求的相关行为
- 添加
StopCluster
异常,用于在spider在回调函数中停止cluster
- 添加
request_ignored
事件
user_agent
默认值设置为 :desktop
- 运行spider之后不会再移除主程序已经设置的signal handler
0.10.1 (2018-07-18)
- 新增
make_requests
函数,用于发起请求并获取对应的结果,详见 Make Requests
log_level
支持小写字母配置,如 debug
。
0.10.0 (2018-07-15)
xpaw crawl
支持直接运行spider,支持指定配置文件,添加了更多的功能选项
- 添加
daemon
配置项,支持以daemon模式运行爬虫
- 添加
pid_file
配置项,支持将爬虫所在进程的PID写入文件
- 添加
dump_dir
配置项,支持爬虫的暂停与恢复
- 运行spider结束时移除配置的log handler,避免先后多次运行spider时打印多余的日志
- 移除爬虫工程的入口文件setup.cfg,直接通过工程根目录下的config.py完成配置
- 重构ProxyMiddleware配置项
- 通过
speed_limit_enabled
控制限速中间件SpeedLimitMiddleware的开启/关闭,默认为关闭状态
- 配置项
verify_ssl
的默认值更改为 False
- 配置项
queue_cls
更名为 queue
- 配置项
dupe_filter_cls
更名为 dupe_filter
- cluster的
stats_center
更名为 stats_collector
,配置项 stats_center_cls
更名为 stats_collector
- 调整了中间件加载顺序权值
- HttpRequest对
auth
, cookie_jar
, proxy
, proxy_auth
的配置移至 meta
属性中
- SetDupeFilter更名为HashDupeFilter
- 修改aiohttp的版本限制为>=3.3.2
0.9.1 (2018-04-16)
- 修复了setup.py中读取README的编码设置问题
- 不再只依赖于通过定时轮询判定job是否结束,单次下载完成后即判定job是否结束
- 修改依赖库的版本限制
0.9.0 (2017-11-13)
- 中间件的加载细分为内置中间件和用户自定义中间件两部分,内置中间件自动加载,用户中间件的加载由配置项确定
- 中间件加载的顺序由配置的权值确定,权值越大越贴近downloader/spider
- 添加
NotEnabled
异常,在中间件/拓展的构造函数中控制抛出该异常来实现开启或禁用该中间件/拓展。
- 添加UserAgentMiddleware,支持选择PC端或移动端的User-Agent,支持随机User-Agent
- 支持配置日志写入指定文件
- 修复了HttpRequest的fingerprint计算时没有考虑端口号的bug
- 移除ResponseNotMatchMiddleware
- 移除ProxyAgentMiddle,原有功能并入ProxyMiddleware
- 修改了RetryMiddleware,ProxyMiddleware,DepthMiddleware的参数配置方式
- ForwardedForMiddleware更名为ImitatingProxyMiddleware,用于设置HTTP请求头的
X-Forwarded-For
和 Via
字段
- 系统配置
downloader_verify_ssl
更名为 verify_ssl
, downloader_cookie_jar_enabled
更名为 cookie_jar_enabled
- 更新了downloader和spider相关的错误处理流程
- 更新了判定job结束的逻辑
0.8.0 (2017-11-5)
- spider的
start_requests
和 parse
函数支持async类型和python 3.6中的async generator类型
- spider中间件的handle_*函数支持async类型
- 添加事件驱动相关的eventbus和events模块,支持事件的订阅/发送,可通过
cluster.event_bus
获取event bus组件
- 捕获SIGINT和SIGTERM信号并做出相应处理
- 添加extension模块,支持用户自定义拓展
- 添加statscenter模块,用于收集,管理系统产生的各项统计量,可通过
cluster.stats_center
获取stats center组件;
系统配置添加 stats_center_cls
项,用于替换默认的stats center的实现
- SetDupeFilter添加
clear
函数
- 系统配置添加
downloader_verify_ssl
项,用于开启或关闭SSL证书认证
- HttpRequest的
body
参数支持 bytes
, str
, FormData
, dict
等形式
- HttpRequest添加
params
, auth
, proxy_auth
, priority
等属性
- 添加深度优先队列LifoQueue,以及优先级队列PriorityQueue,默认
queue_cls
更改为 xpaw.queue.PriorityQueue
- 支持设定HTTP请求的优先级并按优先级进行爬取
- 添加item,pipeline模块,支持spider在处理response时返回BaseItem的实例或dict,并交由用户自定义的item pipelines进行处理
- 实例化中间件的classmethod
from_config
更改为 from_cluster
,现在 config
参数可以通过 cluster.config
获取
- queue组件的
push
, pop
函数,以及dupefilter组件的 is_duplicated
函数改为async类型
- 移除queue组件和dupefilter组件的基类,RequestDequeue更名为FifoQueue
- 系统不再默认调用dupefilter组件和queue组件的
open
和 close
函数,如果自定义的组件包含这些函数,可通过订阅相关事件的方式进行调用
- 系统配置
dupefilter_cls
更名为 dupe_filter_cls
,cluster的 dupefilter
属性更名为 dupe_filter
- RequestHeadersMiddleware更改为DefaultHeadersMiddleware,配置字段
request_headers
更改为 default_headers
,功能由覆盖headers变为设置默认的headers
- 修改了MaxDepthMiddleware更改为DepthMiddleware的参数配置方式,功能变为记录request的depth并对max depth加以限制
- 修改了ProxyMiddleware和ProxyAgentMiddleware的参数配置方式
- 移除CookieJarMiddleware,通过
downloader_cookie_jar_enabled
配置是否启用cookie
- 重写了SpeedLimitMiddleware,通过
rate
(采集速率) 和 burst
(最大并发数) 来限制采集速率
- 更新了
request_fingerprint
的计算方式
- 修改aiohttp的版本限制为>=2.3.2
0.7.1 (2017-10-25)
- 通过
@every
实现定时任务功能
- HttpRequest添加
dont_filter
字段,为 True
时表示该请求不会被过滤
xpaw.run
模块中添加 run_spider
函数,便于在python代码中直接运行Spider类
xpaw.utils.run
模块中 run_crawler
函数移动至 xpaw.run
模块
- 原utils, commands, downloadersmws, spidermws各合并为一个模块
0.7.0 (2017-10-24)
- 使用继承Dupefilter的去重过滤器来实现去重功能,系统配置添加
dupefilter_cls
项,用于替换默认的去重过滤器
xpaw.utils.run
模块中添加 run_crawler
函数,便于在python代码中控制开启爬虫
- 使用config.py替代config.yaml作为配置文件,移除对pyyaml的依赖
- ForwardedForMiddleware移动到
xpaw.downloadermws.headers
模块下
- 修改aiohttp的版本限制为>=2.2.0
- 更新了downloader和spider相关的错误处理流程
- 不再采用中间件的形式实现请求的去重功能,并移除相关的中间件
- ProxyAgentMiddleware的
proxy_agent
配置下面 addr
字段更名为 agent_addr
0.6.5 (2017-05-09)
- HttpRequest添加
errback
字段,表示无法正常获取到HttpResponse时触发的函数
- ResponseMatchMiddleware的配置修改为列表
- middleware的顺序修改为依次向downloader/spider靠近,层层包裹
- 移除任务配置中随机生成的
task_id
0.6.4 (2017-05-05)
- HttpResponse中的
url
字段源于aiohttp返回的ClientResponse中的 url
字段,实际应为 yarl.URL
对象
- LocalCluster启动时不再新建一个线程
- 优化日志工具中设置日志的接口
0.6.2 (2017-03-30)
- HttpResponse添加
encoding
和 text
字段,分别用于获取网页的编码及字符串形式的内容
- 添加ResponseMatchMiddleware,用于初步判断得到的页面是否符合要求
- 添加CookieJarMiddleware,用于维护请求过程中产生的cookie,同时HttpRequest
meta
中添加系统项 cookie_jar
作为发起请求时使用的cookie jar
- HttpRequest
meta
添加 timeout
字段,用于精确控制某个请求的超时时间
- 系统配置添加
queue_cls
项,用于替换默认的请求队列
0.6.1 (2017-03-23)
- 中间件添加
open
和 close
两个钩子函数,分别对应开启和关闭爬虫的事件
- RetryMiddleware中可以自定义需要重试的HTTP状态码
- 添加SpeedLimitMiddleware,用于爬虫限速
- 添加ProxyMiddleware,用于为请求添加指定代理
- 移除MongoDedupeMiddleware及对pymongo的依赖
- 修改ProxyAgentMiddleware,RetryMiddleware在配置文件中的参数格式
- DepthMiddleware更名为MaxDepthMiddleware