Command Line 命令行 ============ Global Config 全局配置 ------------- 你可以通过“pyspider - help”和“pyspider all - help”获得命令帮助。 You can get command help via `pyspider --help` and `pyspider all --help` for subcommand help. 全局选项适用于所有子命令 global options work for all subcommands. ``` 用法 Usage: pyspider [OPTIONS] COMMAND [ARGS]... 一个基于python的强大的爬虫系统 A powerful spider system in python. 命令选项 Options: -c, --config FILENAME 文件名 a json file with default values for subcommands.#一个带有默认值的json文件子命令 {“webui”: {“port”:5001}} --logging-config TEXT logging config file for built-in python logging #内置python日志记录的日志配置文件 module [default: pyspider/pyspider/logging.conf] #模块[默认值: pyspider/pyspider/logging.conf] --debug debug mode #调试模式 --queue-maxsize INTEGER maxsize of queue #队列的最大容量值 --taskdb TEXT database url for taskdb, default: sqlite #taskdb的数据库url,默认:sqlite --projectdb TEXT database url for projectdb, default: sqlite #projectdb的数据库url,默认:sqlite --resultdb TEXT database url for resultdb, default: sqlite #resultdb的数据库url,默认:sqlite --message-queue TEXT connection url to message queue, default: builtin #连接消息队列的url,默认:builtin multiprocessing.Queue #多线程.队列 --amqp-url TEXT [deprecated] amqp url for rabbitmq. please use --message-queue instead. [废弃]amqp url用于rabbitmq。#请使用——消息队列 --beanstalk TEXT [deprecated] beanstalk config for beanstalk queue.#[废弃]豆茎队列的豆茎配置 please use --message-queue instead. #请使用——消息队列 --phantomjs-proxy TEXT phantomjs proxy ip:port #phantomjs 反射 ip:端口 --data-path TEXT data dir path #数据文件路径 --version Show the version and exit.#显示版本并退出 --help Show this message and exit.#显示帮助信息并退出 ``` #### --config #配置 配置文件是一个JSON文件,配置值为全局选项或子命令(根据子命令命名的子命令)。(例子)(/部署/ # JSON配置) Config file is a JSON file with config values for global options or subcommands (a sub-dict named after subcommand). [example](/Deployment/#configjson) ``` json { "taskdb": "mysql+taskdb://username:password@host:port/taskdb", "projectdb": "mysql+projectdb://username:password@host:port/projectdb", "resultdb": "mysql+resultdb://username:password@host:port/resultdb", "message_queue": "amqp://username:password@host:port/%2F", "webui": { "username": "some_name", "password": "some_passwd", "need-auth": true } } ``` #### --queue-maxsize #队列最大值 Queue size limit, 0 for not limit #限制队列大小,0表示不限制 #### --taskdb, --projectdb, --resultdb #任务数据,项目数据,结果数据 ``` mysql: mysql+type://user:passwd@host:port/database sqlite: # relative path 相对路径 sqlite+type:///path/to/database.db # absolute path 绝对路径 sqlite+type:path/to/database.db # memory database 内存数据库 sqlite+type:// mongodb: mongodb+type://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] more: http://docs.mongodb.org/manual/reference/connection-string/ sqlalchemy: sqlalchemy+postgresql+type://user:passwd@host:port/database sqlalchemy+mysql+mysqlconnector+type://user:passwd@host:port/database more: http://docs.sqlalchemy.org/en/rel_0_9/core/engines.html local: local+projectdb://filepath,filepath 类型 type: should be one of `taskdb`, `projectdb`, `resultdb`.可以是`taskdb`, `projectdb`, `resultdb`中的一个 ``` #### --message-queue #消息队列 ``` rabbitmq: amqp://username:password@host:5672/%2F see https://www.rabbitmq.com/uri-spec.html beanstalk: beanstalk://host:11300/ redis: redis://host:6379/db redis://host1:port1,host2:port2,...,hostn:portn (for redis 3.x in cluster mode #在3.x在集群模式下) kombu: kombu+transport://userid:password@hostname:port/virtual_host see http://kombu.readthedocs.org/en/latest/userguide/connections.html#urls builtin: None ``` #### --phantomjs-proxy #phantomjs代理 phantomjs代理地址,您需要一个安装并运行phantomjs代理,命令:[' pyspider phantomjs '](# phantomjs)。 The phantomjs proxy address, you need a phantomjs installed and running phantomjs proxy with command: [`pyspider phantomjs`](#phantomjs). #### --data-path #数据路径 SQLite 数据库和计数器转储文件存储路径 SQLite database and counter dump files saved path all --- ``` 用法 Usage: pyspider all [OPTIONS] Run all the components in subprocess or thread #在子进程或线程中运行所有组件 选项 Options: --fetcher-num INTEGER instance num of fetcher #抓取者的实例数量 --processor-num INTEGER instance num of processor #处理器实例数量 --result-worker-num INTEGER instance num of result worker #结果工作者实例数量 --run-in [subprocess|thread] run each components in thread or subprocess. #在线程或子进程中运行每个组件 always using thread for windows.#总是使用线程的窗口 --help Show this message and exit.#显示帮助信息并退出 ``` one --- ``` 用法 Usage: pyspider one [OPTIONS] [SCRIPTS]... #One 模式不仅意味着一体化,它是在一个进程中运行所有的东西在tornado.ioloop,主要是为了调试目的 One mode not only means all-in-one, it runs every thing in one process over tornado.ioloop, for debug purpose 选项 Options: -i, --interactive enable interactive mode, you can choose crawl url.#启用交互模式,你可以选择抓取url。 --phantomjs enable phantomjs, will spawn a subprocess for phantomjs #启用phantomjs,将为phantomjs生成一个子流程 --help Show this message and exit.#显示帮助信息并退出 ``` #注:WebUI不是在one模式下运行 **NOTE: WebUI is not running in one mode.** #在“one”模式下,结果将被默认写入stdout。你可以通过命令“pyspider one > resultxt”来捕捉它们。 In `one` mode, results will be written to stdout by default. You can capture them via `pyspider one > result.txt`. #### [SCRIPTS] #项目的脚本文件路径。项目在运行状态下,`rate` 和 `burst`可以设置获取脚本内容 The script file path of projects. Project status is RUNNING, `rate` and `burst` can be set via script comments: ``` # rate: 1.0 # burst: 3 ``` 当设置了脚本时,“taskdb”和“resultdb”将在默认情况下使用内存中的sqlite 数据库(可以由全局配置“taskdb”,“- resultdb”来覆盖)。将在on_start回调启动时触发。 When SCRIPTS is set, `taskdb` and `resultdb` will use a in-memory sqlite db by default (can be overridden by global config `--taskdb`, `--resultdb`). on_start callback will be triggered on start. #### -i, --interactive #在交互模式下,pyspider将启动一个交互式控制台,询问下一个循环过程中要做什么。在控制台,你可以使用: With interactive mode, pyspider will start an interactive console asking what to do in next loop of process. In the console, you can use: ``` python crawl(url, project=None, **kwargs) Crawl given url, same parameters as BaseHandler.crawl #抓取给定的url,参数和basehandler.crawl中相同 url - url or taskid, parameters will be used if in taskdb #url或taskid,参数将在taskdb中使 project - can be omitted if only one project exists. #如果只存在一个项目可以省略 quit_interactive() Quit interactive mode #退出交互模式 quit_pyspider() Close pyspider #关闭pyspider ``` #您可以使用“pyspider.libs.utils.python_console()“在你的脚本中打开一个交互式控制台。 You can use `pyspider.libs.utils.python_console()` to open an interactive console in your script. bench #基准,基线 ----- ``` 用法 Usage: pyspider bench [OPTIONS] #运行基准测试。在bench模式下,使用内存中的sqlite数据库代替磁盘上的sqlite数据库。 Run Benchmark test. In bench mode, in-memory sqlite database is used instead of on-disk sqlite database. 选项 Options: --fetcher-num INTEGER instance num of fetcher #fetcher实例数量 --processor-num INTEGER instance num of processor #processor实例数量 --result-worker-num INTEGER instance num of result worker #result worker实例数量 --run-in [subprocess|thread] run each components in thread or subprocess.#在线程或子进程中运行每个组件 always using thread for windows.#总是使用线程的窗口 --total INTEGER total url in test page #测试页面中url总数 --show INTEGER show how many urls in a page #显示页面中有多少url --help Show this message and exit.#显示帮助信息并退出 ``` scheduler 调度器 --------- ``` 用法 Usage: pyspider scheduler [OPTIONS] #只允许一个调度器运行 Run Scheduler, only one scheduler is allowed. 选项 Options: --xmlrpc / --no-xmlrpc --xmlrpc-host TEXT --xmlrpc-port INTEGER --inqueue-limit INTEGER size limit of task queue for each project, tasks will been ignored when overflow #每个项目下任务队列的大小限制,任务数超出时会被忽略 --delete-time INTEGER delete time before marked as delete #删除标记为删除的时间 --active-tasks INTEGER active log size #活动日志大小 --loop-limit INTEGER maximum number of tasks due with in a loop #在循环中完成的最大任务数量 --scheduler-cls TEXT scheduler class to be used.#调度器使用的类 --help Show this message and exit.#显示帮助信息并退出 ``` #### --scheduler-cls set this option to use customized Scheduler class #设置此选项可使用定制的调度器类 phantomjs --------- ``` 用法 Usage: run.py phantomjs [OPTIONS] [ARGS]... 如果安装了phantomjs,就可以运行phantomjs抓取 Run phantomjs fetcher if phantomjs is installed. 选项 Options: --phantomjs-path TEXT phantomjs path #phantomjs 路径 --port INTEGER phantomjs port #phantomjs 端口 --auto-restart TEXT auto restart phantomjs if crashed #如果phantomjs崩溃自动重启 --help Show this message and exit.#显示帮助信息并退出 ``` #### ARGS #添加args传递到phantomjs命令行 Addition args pass to phantomjs command line. fetcher 抓取器 ------- ``` 用法 Usage: pyspider fetcher [OPTIONS] #运行抓取器 Run Fetcher. 选项 Options: --xmlrpc / --no-xmlrpc --xmlrpc-host TEXT --xmlrpc-port INTEGER --poolsize INTEGER max simultaneous fetches #最大同时抓取 --proxy TEXT proxy host:port #反射 地址:端口 --user-agent TEXT user agent #用户代理 --timeout TEXT default fetch timeout #默认抓取超时 --fetcher-cls TEXT Fetcher class to be used. #抓取器使用的类 --help Show this message and exit.#显示帮助信息并退出 ``` #### --proxy #代理 #可以使用fetcher默认代理替换”self.crawl“中的选项 Default proxy used by fetcher, can been override by `self.crawl` option. [DOC](apis/self.crawl/#fetch) processor #处理器 --------- ``` 用法 Usage: pyspider processor [OPTIONS] #运行调度器 Run Processor. 选项 Options: --processor-cls TEXT Processor class to be used.#调度器使用的类 --help Show this message and exit.#显示帮助信息并退出 ``` result_worker #结果工作者 ------------- ``` 用法 Usage: pyspider result_worker [OPTIONS] 运行结果工作者 Run result worker. 选项 Options: --result-cls TEXT ResultWorker class to be used. #结果工作者使用的类 --help Show this message and exit.#显示帮助信息并退出 ``` webui 页面 ----- ``` 用法 Usage: pyspider webui [OPTIONS] 运行页面 Run WebUI 选项 Options: --host TEXT webui bind to host #绑定主机地址 --port INTEGER webui bind to host #绑定主机端口 --cdn TEXT js/css cdn server #js/css cdn 服务器 --scheduler-rpc TEXT xmlrpc path of scheduler #调度器的xmlrpc地址 --fetcher-rpc TEXT xmlrpc path of fetcher #提取器的xmlrpc地址 --max-rate FLOAT max rate for each project #项目最大速率 --max-burst FLOAT max burst for each project #项目最大爆发 --username TEXT username of lock -ed projects #锁定项目的用户名 --password TEXT password of lock -ed projects #锁定项目的密码 --need-auth need username and password #必须验证用名密码 --webui-instance TEXT webui Flask Application instance to be used.#webui使用的Flask 应用实例 --help Show this message and exit.#显示帮助信息并退出 ``` #### --cdn #JS / CSS libs CDN服务,URL必须兼容[cdnjs](https://cdnjs.com/) JS/CSS libs CDN service, URL must compatible with [cdnjs](https://cdnjs.com/) #### --fercher-rpc #fetcher XMLRPC服务器的XML-RPC路径URI。如果没有设置,请使用Fetcher实例。 XML-RPC path URI for fetcher XMLRPC server. If not set, use a Fetcher instance. #### --need-auth #如果可以,所有页面都需要通过指定“--username”和“--password”来获取用户名和密码。 If true, all pages require username and password specified via `--username` and `--password`.