• 详解Scrapy的命令行工具


    接触过Scrapy的人都知道,我们很多操作是需要借助命令行来执行的,比如创建项目,运行爬虫等。所以了解和掌握这些命令对于scrapy的学习是很有帮助的!

    Scrapy 命令

          首先,在scrapy命令中分为两种,一个就是全局命令和项目命令,什么意思呢?简单粗暴的说就是有些命令你可以在你电脑任何地方用,有些命令只能在你自己的项目里面用。

        下面给大家先看看所有的命令:

    Global commands(全局命令):

    • startproject
    • genspider
    • settings
    • runspider
    • shell
    • fetch
    • view
    • version

    Project-only commands(项目命令):

    • crawl
    • check
    • list
    • edit
    • parse
    • bench

    咱们一个一个来吧!

    1. startproject

    语法

    scrapy startproject <project_name> [project_dir]

    含义:创建一个新的Scrapy项目,名称为 project_name ,在project_dir目录下,如果目录不存在,那么目录就会变成项目名。

    使用案例

    $ scrapy startproject myproject

    2. genspider

    语法

    scrapy genspider [-t template] <name> <domain>

    含义:新建一个爬虫在当前文件夹或者在当前项目的爬虫文件夹中,如果是在一个项目当中,这个<name>参数将被当成爬虫的名字,然而<domain>将会被用来创建爬虫里面的 allowed_domains 和start_urls的属性值

    使用案例

    $ scrapy genspider -l       Available templates:四种模板  basic  crawl  csvfeed  xmlfeed
    $ scrapy genspider example example.com创建example爬虫,并且默认使用basic模板
    $ scrapy genspider -t crawl scrapyorg scrapy.org创建scrapyorg模板,并且使用crawl模板

    3.crawl

    语法

    scrapy crawl <spider>

    含义:运行爬虫

    使用案例

    $ scrapy crawl myspider

    4. check

    语法

    scrapy check [-l] <spider>

    含义:运行contract检查,检查你项目中的错误之处。

    使用案例

    $ scrapy check -lfirst_spider  * parse  * parse_itemsecond_spider  * parse  * parse_item
    $ scrapy check[FAILED] first_spider:parse_item>>> 'RetailPricex' field is missing
    [FAILED] first_spider:parse>>> Returned 92 requests, expected 0..4

    5. list

    语法scrapy list

    含义:列举出当前项目的爬虫

    使用案例

    $ scrapy listspider1spider2 

    6. edit

    语法scrapy edit <spider>

    含义:编辑爬虫代码,实际上就是vim模式,但是这种方式并不怎么好用,还不如用IDE去写爬虫。

    使用案例

    $ scrapy edit spider1

    7. fetch

    语法scrapy fetch <url>

    含义:使用Scrapy下载器下载指定的URL,并将获得的内容输出,通俗的来说就是打印出网站的HTML源码。

    使用实例:

    $ scrapy fetch --nolog http://www.example.com/some/page.html[ ... html content here ... ]

    8.view

    语法scrapy view <url>

    含义:在你的默认浏览器中打开给定的URL,并以Scrapy spider获取到的形式展现。 有些时候spider获取到的页面和普通用户看到的并不相同,一些动态加载的内容是看不到的, 因此该命令可以用来检查spider所获取到的页面。

    使用案例

    $ scrapy view http://www.example.com/some/page.html[ ... browser starts ... ]

    9.shell

    语法scrapy shell [url]

    含义:启动Scrapy Shell 来打开url,可以进行一些测试

    使用案例

    # 直接请求
    scrapy shell http://www.baidu.com[ ... scrapy shell starts ... ]
    # 加headers
    scrapy shell
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36"}
    req = scrapy.Request(url="https://bbs.pinggu.org/thread-7866291-1-1.html", headers=headers)
    fetch(req)

    10. parse

    语法scrapy parse <url> [options]

    含义:输出格式化内容

    Supported options:

    • --spider=SPIDER: 自动检测爬虫、强制使用特定爬虫

    • --a NAME=VALUE: 设置爬虫的参数(可重复)

    • --callback or -c: 用作解析响应的回调的爬虫方法

    • --meta or -m: 传递给回调请求的附加请求元。必须是有效的JSON字符串。示例:–meta='“foo”:“bar”

    • --pipelines: 通过管道处理项目

    • --rules or -r: 使用crawlspider规则发现用于解析响应的回调(即spider方法)

    • --noitems: 不显示items

    • --nolinks: 不显示提取的链接

    • --nocolour: 避免使用Pygments对输出着色

    • --depth or -d: 递归执行请求的深度级别(默认值:1)

    • --verbose or -v: 显示每个深度级别的信息

    使用案例

    $ scrapy parse http://www.example.com/ -c parse_item[ ... scrapy log lines crawling example.com spider ... ]
    >>> STATUS DEPTH LEVEL 1 <<<# Scraped Items  ------------------------------------------------------------[{'name': 'Example item', 'category': 'Furniture', 'length': '12 cm'}]
    # Requests  -----------------------------------------------------------------[]

    11.settings

    语法scrapy settings [options]

    含义:拿到Scrapy里面的设置属性

    使用案例

    $ scrapy settings --get BOT_NAMEscrapybot$ scrapy settings --get DOWNLOAD_DELAY0

    12.runspider

    语法scrapy runspider <spider_file.py>

    含义:运行一个含有爬虫的python文件,不需要是一个scrapy项目

    使用案例

    $ scrapy runspider myspider.py[ ... spider starts crawling ... ]

    13.version

    语法scrapy version [-v]

    含义:查看Scrapy版本

    使用案例

    scrapy versionScrapy 1.6.0

    14.bench

    语法:scrapy bench

     含义:测试电脑当前爬取速度性能

  • 相关阅读:
    ajax工作原理
    ajax 和xmlHttpRequest区别
    ajax 基本语法
    javascript 中XMLHttpRequest 实现前台向后台的交互
    Javascript 中ajax实现前台向后台交互
    javascript 中函数eval()
    两道有趣的面试题
    linux 中的快捷键
    linux awk命令详解
    linux sed命令详解
  • 原文地址:https://www.cnblogs.com/zhangyafei/p/10851826.html
Copyright © 2020-2023  润新知