[Command line tool] - 命令行工具
摘要:关于scrapy常用命令的记录,可以作为参考
本节是对Scrapy命令行工具章节的学习,我会按照爬虫任务中的逻辑排列。
1 概述
在Scrapy中即可以单独创建爬虫也可以在一个项目文件中创建多个爬虫,下面简单罗列下命令以便以后的查阅,更详细的用法和说明在后一节中。(Scrapy版本1.4.0)
创建项目
scrapy startproject <project_name> [project_dir]
创建独立爬虫 / 在当前项目下创建爬虫
scrapy genspider [-t template] <name> <domain>
启动当前项目下的指定爬虫,默认遵守robots协议,这个时候要去settings.py文件中设置robots协议
scrapy crawl <spider>
列出当前项目爬虫列表
scrapy list
从爬虫的视角查看网页
scrapy view <url>
运行独立爬虫文件,这个时候默认不遵守robots协议
scrapy runspider <spider_file.py>
scrapy交互式命令行
scrapy shell <url>
# 通过-s指定USER_AGENT头,不然容易反爬
scrapy shell -s USER_AGENT="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" "https://movie.douban.com/top250"
2 详细参数说明
2.1 可选参数
所有的命令都可以使用全局参数:
--nolog 不输出爬取日志内容(全局命令)
--logfile=FILE 输出日志到FILE(全局命令)
--loglevel=LEVEL 设置调试级别,默认DEBUG(全局命令)
独有的可选参数可以使用如下命令查看:
scrapy [command] -h
2.2 创建项目
句法:
scrapy startproject <project_name> [project_dir]
说明:
以project_name为名字在project_dir目录下创建爬虫项目,如果project_dir没有指定则同项目名。
用例:
scrapy startproject myproject
2.3 创建爬虫
查看当前已有的spider模板:
> scrapy genspider -l
basic
crawl
csvfeed
xmlfeed
句法:
scrapy genspider [-t template] <name> <domain>
说明:
以指定模板template创建名为name的爬虫(如果未指定模板则默认使用basic),它目标域名是domain
用例:
scrapy genspider -t crawl scrapyorg scrapy.org
scrapy genspider scrapyorg2 scrapy.org
scrapy genspider -t csvfeed scrapyorg3 scrapy.org
scrapy genspider -t xmlfeed scrapyorg4 scrapy.org
2.4 启动爬虫
句法:
# <spider>是爬虫的名字,不是.py文件
scrapy crawl <spider>
# 将爬虫返回的item以csv格式输出
scrapy crawl 爬虫文件名 -o keep.csv --nolog
说明:(在项目中使用)
使用爬虫spider开始爬取
用例:
scrapy crawl myspider
传递参数:
scrapy crawl myspider -a category=electronics
相应的爬虫代码:
import scrapy
class MySpider(Spider):
name = 'myspider'
def __init__(self, category=None, *args, **kwargs):
super(MySpider, self).__init__(*args, **kwargs)
self.start_urls = ['http://www.example.com/categories/%s' % category]
2.5 其他
scrapy list
句法:scrapy list
说明:
列出当前项目中的所有爬虫scrapy fetch
句法:scrapy fetch <url>
使用Scrapy下载器下载指定链接网页,并将网页内容打印到控制台,可以使用参数如下:
--spider=SPIDER 使用指定爬虫进行爬取 --headers 只输出headers --no-redirect 不允许重定向
例子:
scrapy fetch --nolog http://www.example.com/some/page.html
scrapy view
句法:scrapy view <url>
说明:
在URL中打开给定链接,因为爬虫看到的内容和我们看到的内容会有不同,从view打开的页面就是爬虫看到的页面。--spider=SPIDER --no-redirect
url最好用""包围,不然url可能识别不准确,下面示例的url不用""就会出错
scrapy settings
句法:scrapy settings [options]
获取Scrapy的设置:
例子:
scrapy settings --get BOT_NAME
scrapy runspider
句法:scrapy runspider <spider_file.py>
说明:
无需创建爬虫项目,直接从爬虫文件运行爬虫例子:
scrapy runspider myspider.py
scrapy bench
句法:scrapy bench
说明:
快速对Scrapy进行跑分scrapy version
句法:scrapy version
说明:
显示scrapy的版本信息scrapy parse
句法:scrapy parse --spider=爬虫名 http://news.163.com scrapy parse --spider=didi http://news.163.com
说明:
(在项目中使用),可以打印出爬虫返回的request和item对象到控制台上。
参考
摘抄自:Command line tool - 命令行工具 - 知乎,感谢作者
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。