Scrapy
来源:互联网 发布:网络机顶盒必装软件 编辑:程序博客网 时间:2024/06/05 08:00
Scrapy是由scrapy命令行工具来控制的,它的命令行工具为多种用途提供了一些不同的命令,每一个命令都有不同的参数和选项。
一些Scrapy命令必须在Scrapy项目目录下执行,另一些可以在任何目录下执行。而那些可以在任何目录下执行的命令,如果在Scrapy项目目录下执行可能会有些不同。
1. scrapy
首先运行Scrapy命令行工具但没有任何命令,它会输出一些用法和可以使用的命令到屏幕上:
(scrapyEnv) MacBook-Pro:~ $ scrapyScrapy 1.4.0 - no active projectUsage: scrapy <command> [options] [args]Available commands: bench Run quick benchmark test fetch Fetch a URL using the Scrapy downloader genspider Generate new spider using pre-defined templates runspider Run a self-contained spider (without creating a project) settings Get settings values shell Interactive scraping console startproject Create new project version Print Scrapy version view Open URL in browser, as seen by Scrapy [ more ] More commands available when run from project directoryUse "scrapy <command> -h" to see more info about a command(scrapyEnv) MacBook-Pro:~ $
如果是在一个Scrapy项目的目录里运行的命令,则第一行显示的是当前的项目,如果不在任何Scrapy项目下,则显示"no active project"
想了解命令更多的信息可以使用:scrapy <command> -h
(scrapyEnv) MacBook-Pro:myproject$ scrapy startproject -hUsage===== scrapy startproject <project_name> [project_dir]Create new projectOptions=======--help, -h show this help message and exitGlobal Options----------------logfile=FILE log file. if omitted stderr will be used--loglevel=LEVEL, -L LEVEL log level (default: DEBUG)--nolog disable logging completely--profile=FILE write python cProfile stats to FILE--pidfile=FILE write process ID to FILE--set=NAME=VALUE, -s NAME=VALUE set/override setting (may be repeated)--pdb enable pdb on failure(scrapyEnv) MacBook-Pro:myproject $
2. scrapy startproject
- Syntax: scrapy startproject <project_name> [project_dir]
- Requires project: no
创建scrapy项目。
(scrapyEnv) MacBook-Pro:Project $ scrapy startproject myproject [project_dir]
将会新建一个Scrapy项目在project_dir目录下。如果project_dir没有指定,则默认的目录为myproject。
然后进入新建项目的目录,现在我们可以使用scrapy的命令管理、控制新建的scrapy项目。
这里要介绍两个方面的知识:
2.1 配置设定
Scrapy的配置都保存在scrapy.cfg文件中,这个文件可能出现在3个地方:
1. /etc/scrapy.cfg 或 c:\scrapy\scrapy.cfg (系统级的配置)
2. ~/.config/scrapy.cfg ($XDG_CONFIG_HOME) 和 ~/.scrapy.cfg ($HOME) (用户级的配置)
3. scrapy.cfg 在scrapy项目的根目录下(项目级的配置)
这些配置都会合并到一起并按3>2>1的顺序排列,即3的优先级>2的优先级>1的优先级。
Scrapy也能通过一些环境变量进行设置:
- SCRAPY_SETTINGS_MODULE
- SCRAPY_PROJECT
- SCRAPY_PYTHON_SHELL
2.2 项目结构
所有的Scrapy项目一个默认的基本结构如下:
.|____myproject| |____items.py| |____middlewares.py| |____pipelines.py| |____settings.py| |____spiders| | |____spider1.py| | |____spider2.py|____scrapy.cfg
scrapy.cfg所在的目录就是项目的根目录。该文件包含着定义项目设置的python模块的名字,如
6 [settings] 7 default = myproject.settings
3. scrapy genspider
- Syntax: scrapy genspider [-t template] <name> <domain>
- Requires project: no
在当前目录或当前项目的spiders目录下创建新的spider。<name>参数是设置spider的名字,<domain>用来生成spider的属性:allowed_domains和start_urls。
(scrapyEnv) MacBook-Pro:scrapy $ scrapy genspider -lAvailable templates: basic crawl csvfeed xmlfeed(scrapyEnv) MacBook-Pro:scrapy $ scrapy genspider example example.comCreated spider 'example' using template 'basic'(scrapyEnv) MacBook-Pro:scrapy $ scrapy genspider -t crawl scrapyorg scrapy.orgCreated spider 'scrapyorg' using template 'crawl'(scrapyEnv) MacBook-Pro:scrapy $
这个命令提供了一个创建spider的简便方法,当然我们也还是可以自己创建spider的源文件。
4. scrapy crawl
- Syntax: scrapy crawl <spider>
- Requires project: yes
使用爬虫spider开始爬取。
(scrapyEnv) MacBook-Pro:project $ scrapy crawl myspider
5. scrapy check
- Syntax: scrapy check [-l] <spider>
- Requires project: yes
运行检查。
(scrapyEnv) MacBook-Pro:project $ scrapy check -l(scrapyEnv) MacBook-Pro:project $ scrapy check----------------------------------------------------------------------Ran 0 contracts in 0.000sOK(scrapyEnv) MacBook-Pro:project $
6. scrapy list
- Syntax: scrapy list
- Requires project: yes
列出当前项目中所有可用的spiders。
(scrapyEnv) MacBook-Pro:project $ scrapy listtoscrape-csstoscrape-xpath(scrapyEnv) MacBook-Pro:project $
7. edit
- Syntax: scrapy edit <spider>
- Requires project: yes
(scrapyEnv) MacBook-Pro:project $ scrapy edit toscrape-css(scrapyEnv) MacBook-Pro:project $
8. fetch
- Syntax: scrapy fetch <url>
- Requires project: no
使用Scrapy的下载器下载给定的url并将内容写至标准输出设备。
值得注意的是它是按照spider如何下载网页的方式来获取页面的,如果spider有一个USER_AGENT属性则fetch也会使用spider的USER_AGENT作为自己的user_agent。如果是在Scrapy项目外使用fetch,没有应用特别的爬虫设置则使用默认的Scrapy下载设置。
此命令支持3个选项:
- --spider=SPIDER: 忽略自动检测的spider,强制使用指定的spider
- --headers: 输出response的HTTP headers而不是response的body内容
- --no-redirect: 不会随着HTTP 3xx重定向(默认是随着HTTP的重定向)
(scrapyEnv) MacBook-Pro:project $ scrapy fetch --nolog http://www.example.com/some/page.html[ ... html content here ...](scrapyEnv) MacBook-Pro:project $ scrapy fetch --nolog --headers http://www.example.com/> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8> Accept-Language: en> User-Agent: Scrapy/1.4.0 (+http://scrapy.org)> Accept-Encoding: gzip,deflate>< Cache-Control: max-age=604800< Content-Type: text/html< Date: Wed, 25 Oct 2017 13:55:57 GMT< Etag: "359670651+gzip"< Expires: Wed, 01 Nov 2017 13:55:57 GMT< Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT< Server: ECS (oxr/839F)< Vary: Accept-Encoding< X-Cache: HIT(scrapyEnv) MacBook-Pro:project $
9. view
- Syntax: scrapy view <url>
- Requires project: no
在浏览器中打开指定的URL。有时spider看的页面会与普通用户看到的不一致,因此这个命令可以用来检查spider看到的是否与我们设想的一致。
支持的选项:
- --spider=SPIDER: 强制使用指定的spider
- --no-redirect: 不重定向(默认的是重定向)
(scrapyEnv) MacBook-Pro:project $ scrapy view http://www.163.com
10. shell
- Syntax: scrapy shell [url]
- Requires project: no
为指定的URL启动scrapy shell或不指定URL仅仅启动shell。支持UNIX风格的本地文件路径,也支持相对路径./或../,同时绝对的文件路径也是支持的。
支持的选项:
- --spider=SPIDER: 强制使用指定的spider
- -c code: 在shell中求代码的值,打印结果并退出
- --no-redirect: 不重定向(默认的是重定向);这仅仅只适用于命令行中当做参数传入的URL,如果进入scrapy shell,再使用fetch(url)时,默认会重定向。
(scrapyEnv) MacBook-Pro:project $ scrapy shell http://www.example.com/some/page.html[ ... scrapy shell starts ...](scrapyEnv) MacBook-Pro:project$ scrapy shell --nolog http://www.example.com/ -c '(response.status, response.url)'(200, 'http://www.example.com/')(scrapyEnv) MacBook-Pro:project $ scrapy shell --nolog http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F -c '(response.status, response.url)'(200, 'http://example.com/')(scrapyEnv) MacBook-Pro:project $ scrapy shell --no-redirect --nolog http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F -c '(response.status, response.url)'(302, 'http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F')(scrapyEnv) MacBook-Pro:project $
11. parse
- Syntax: scrapy parse <url> [options]
- Requires project: yes
获取给定URL的页面并使用处理这个URL的spider解析,用--callback指定的方法,如果没指定则用默认的parse方法解析。
支持的选项
- --spider=SPIDER: 强制使用指定的spider
- --a NAME=VALUE:设置spider参数(可能重复的)
- --callback 或 -c:spider的回调方法,用来解析response的
- --pipelines:通过pipelines处理items
- --rules 或 -r:用crqslspider的规则去发现回调方法来解析response
- --noitems:不显示爬取的items
- --nolinks:不显示获取的链接
- --nocolour:避免使用pygments给输出着色
- --depth 或 -d:request请求递归的深度(默认为1)
- --verbose 或 -v:显示debug信息
12. settings
- Syntax: scrapy settings [options]
- Requires project: no
获取Scrapy设置的某个值。
如果在项目下使用,显示的是项目的配置,否则显示的是默认的scrapy设置。
(scrapyEnv) MacBook-Pro:project $ scrapy settings --get BOT_NAMEquotesbot(scrapyEnv) MacBook-Pro:project $ scrapy settings --get DOWNLOAD_DELAY0(scrapyEnv) MacBook-Pro:project $
13. runspider
- Syntax: scrapy runspider <spider_file.py>
- Requires project: no
运行自包含在一个py文件中的爬虫,不需要创建项目。
$ scrapy runspider myspider.py
14. version
- Syntax: scrapy version [-v]
- Requires project: no
打印Scrapy的版本。如果和-v一起使用,将还会打印python,twisted和系统的信息。
15. bench
- Syntax: scrapy bench
- Requires project: no
运行一个基本测试。
- scrapy
- Scrapy
- scrapy
- Scrapy
- Scrapy
- Scrapy
- Scrapy
- Scrapy
- scrapy
- Scrapy
- scrapy
- Scrapy
- Scrapy
- Scrapy
- scrapy
- scrapy
- scrapy
- Scrapy
- 如何将PDF文件转换成PPT格式?PDF文件转PPT格式教程分享
- Java Swing编程的时候使用JTable出现ArrayIndexOutOfBoundsException问题
- Arraylist集合三种排序
- SharedPreference文件变化监听器OnSharedPreferenceChangeListener
- 对HTTP协议无状态的理解
- Scrapy
- 【框架】——SSM框架的整合(四)
- 在eclipse中指定使用某个版本的JDK和JRE
- 高精度运算模板
- Windows编程基础--第9节 MFC对话框控件访问的七种方法(下)
- node.js 出现错误代码 Cannot enqueue Handshake after invoking quit
- CodeForces 86C Genetic engineering (AC自动机 上 DP)
- 在java中两个线程同时运行是怎么变化的
- 设计模式--单例模式(一)懒汉式和饿汉式