摘要:关于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 可选参数

所有的命令都可以使用全局参数:

Command line tool-命令行工具1.jpg

--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

Command line tool-命令行工具2.jpg

scrapy genspider scrapyorg2 scrapy.org

Command line tool-命令行工具3.jpg

scrapy genspider -t csvfeed scrapyorg3 scrapy.org

Command line tool-命令行工具4.jpg

scrapy genspider -t xmlfeed scrapyorg4 scrapy.org

Command line tool-命令行工具5.jpg

2.4 启动爬虫

句法:

# <spider>是爬虫的名字,不是.py文件
scrapy crawl <spider>
# 将爬虫返回的item以csv格式输出
scrapy crawl 爬虫文件名 -o keep.csv --nolog 

说明:(在项目中使用)

使用爬虫spider开始爬取

Command line tool-命令行工具6.jpg

用例:

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 其他

  1. scrapy list
    句法:

    scrapy list

    说明:
    列出当前项目中的所有爬虫

  2. scrapy fetch
    句法:

    scrapy fetch <url>

    使用Scrapy下载器下载指定链接网页,并将网页内容打印到控制台,可以使用参数如下:

    --spider=SPIDER 使用指定爬虫进行爬取
    --headers 只输出headers
    --no-redirect 不允许重定向

    例子:

    scrapy fetch --nolog http://www.example.com/some/page.html
  3. scrapy view
    句法:

    scrapy view <url>

    说明:
    在URL中打开给定链接,因为爬虫看到的内容和我们看到的内容会有不同,从view打开的页面就是爬虫看到的页面。

    --spider=SPIDER
    --no-redirect

    url最好用""包围,不然url可能识别不准确,下面示例的url不用""就会出错

    scrapyview.png

  4. scrapy settings
    句法:

    scrapy settings [options]

    获取Scrapy的设置:

    Command line tool-命令行工具7.jpg

    例子:

    scrapy settings --get BOT_NAME
  5. scrapy runspider
    句法:

    scrapy runspider <spider_file.py>

    说明:
    无需创建爬虫项目,直接从爬虫文件运行爬虫

    Command line tool-命令行工具8.jpg

    例子:

    scrapy runspider myspider.py
  6. scrapy bench
    句法:

    scrapy bench

    说明:
    快速对Scrapy进行跑分

  7. scrapy version
    句法:

    scrapy version

    说明:
    显示scrapy的版本信息

  8. scrapy parse
    句法:

    scrapy parse --spider=爬虫名 http://news.163.com 
    scrapy parse --spider=didi http://news.163.com 

    说明:
    (在项目中使用),可以打印出爬虫返回的request和item对象到控制台上。

    scrapyparse.png

参考

摘抄自:Command line tool - 命令行工具 - 知乎,感谢作者

文章目录