Scrapy 命令行工具

1.Scrapy是通过 scrapy命令行工具控制的,Scrapy 工具提供了多个命令,用于多种用途,每个命令都接受一组不同的参数和选项。

2.配置设置

  scrapy.cfg 文件位置:

  1)系统级的位置:我这里是在D:\Users\AndyH\AppData\Local\Programs\Python\Python310\Lib\site-packages\scrapy\templates\project\scrapy.cfg 中。是用于全局的。

  2)每个项目的根目录:如 F:\python_work\scrapy_Sample\tutorial\scrapy.cfg 

  项目级的优先级最高

3.scrapy项目的默认结构

  虽然可以修改目录,但所有scrapy项目默认具有相同的文件结构,类似于:

   所有爬取业务放在spiders文件夹下。scrapy.cfg称为项目根目录。该文件包含定义项目设置的 python 模块的名称。如:

4.使用scrapy工具

  可以先运行不带参数的scrapy工具,它将打印一些使用帮助和可用命令:

    scrapy命令:  有项目内部运行的命令(仅限项目的命令),有项目外部运行的命令(全局命令),下面详细介绍。

    通过scrapy <command> -h 可以查看某个命令的更多信息

    通过scrapy -h 可以查看可用的所有命令

  1) startproject  全局命令

    使用scrapy工具做的第一件事就是创建项目,这将在project_dir目录下创建一个scrapy项目

scrapy startproject myproject [project_dir]

  2)genspider  全局命令

    从字面解释是:生成一个新的爬虫预定义模板。在tutorial爬虫项目目录下,vs code终端运行下面命令,生成一个baidu.py的爬取文件。  

PS F:\python_work\scrapy_Sample\tutorial> scrapy genspider baidu  baidu.com       
Created spider 'baidu' using template 'basic' in module:
  tutorial.spiders.baidu

    baidu.py自动生成在spiders文件夹下,并生成代码,如下所示:

    下面是生成模板的选项,上面默认生成的是basic模板。

PS F:\python_work\scrapy_Sample\tutorial> scrapy genspider -l
Available templates:
  basic
  crawl
  csvfeed
  xmlfeed

  3)crawl  内部命令

    代表运行一个爬虫, quotes是项目爬取标识,项目中每一个爬取文件的name是唯一的。如quotes_spider.py的爬取标识为name=”quotes“

PS F:\python_work\scrapy_Sample\tutorial> scrapy crawl quotes

  4)check 内部命令

    检查一个爬虫

PS F:\python_work\scrapy_Sample\tutorial> scrapy check quotes

  5)list  内部命令

    列出当前项目可用的爬虫

PS F:\python_work\scrapy_Sample\tutorial> scrapy list   
baidu
quotes

  6)fetch(外部命令)

    使用scrapy下载器下载给定的url,并将内容写入标准输出。

    爬取内容输出命令如下:

PS F:\python_work\scrapy_Sample\tutorial> scrapy fetch --nolog http://www.example.com/some/page.html
<!doctype html>
<html>
<head>
    <title>Example Domain</title>

    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;

    }
    div {
        width: 600px;
        margin: 5em auto;
        padding: 2em;
        background-color: #fdfdff;
        border-radius: 0.5em;
        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
    }
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    }
    @media (max-width: 700px) {
        div {
            margin: 0 auto;
            width: auto;
        }
    }
    </style>
</head>

<body>
...

    下面命令是打印响应的http 头,则不是响应的正文

PS F:\python_work\scrapy_Sample\tutorial>  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/2.6.1 (+https://scrapy.org)
> Accept-Encoding: gzip, deflate
>
< Content-Length: 648
< Age: 536398
< Cache-Control: max-age=604800
< Content-Type: text/html; charset=UTF-8
< Date: Fri, 17 Jun 2022 11:51:11 GMT
< Etag: "3147526947+gzip"
< Expires: Fri, 24 Jun 2022 11:51:11 GMT
< Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
< Server: ECS (sab/57A7)
< Vary: Accept-Encoding
< X-Cache: HIT

    下面使用指定的爬虫名( --spider=quotes),下载给定的url,并将内容写入标准输出

PS F:\python_work\scrapy_Sample\tutorial> scrapy fetch --spider=quotes  http://www.example.com/some/page.html

  7)view 外部命令

    输入下面的命令,会打开一个浏览器并显示访问的页面

PS F:\python_work\scrapy_Sample\tutorial> scrapy view http://www.example.com/some/page.html

    下面使用指定的爬虫名( --spider=quotes),会打开一个浏览器并显示访问的页面

PS F:\python_work\scrapy_Sample\tutorial> scrapy view --spider=quotes  http://www.example.com/some/page.html

   8) shell  外面命令

PS F:\python_work\scrapy_Sample\tutorial>  scrapy shell http://www.example.com/some/page.html

  通过shell命令请求Uri后,可以继续 如 "提取数据"

In [1]: response.css('title')
Out[1]: [<Selector xpath='descendant-or-self::title' data='<title>Example Domain</title>'>]

In [2]: exit()

  如果uri 中含有&字符,需要用双引号,如下所示:

PS F:\python_work\scrapy_Sample\tutorial>  scrapy shell "https://www.futureelectronics.cn/c/audio/products?q=%3Arelevance&text=&pageSize=25&page=1"

  加-c参数评估

PS F:\python_work\scrapy_Sample\tutorial>  scrapy shell --nolog  http://www.example.com/  -c '(response.status, response.url)'
(200, 'http://www.example.com/')

  9)parse 内部命令

    获取给定的 URL 并使用处理它的蜘蛛解析它,使用与--callback选项一起传递的方法,或者parse如果没有给出。

    下面是指定项目,调用指定的callback函数来解析(-c parse)

PS F:\python_work\scrapy_Sample\tutorial> scrapy parse --spider=quotes  http://www.example.com/ -c parse  

   10)runspider  外面命令

    在 Python 文件中运行自包含的爬虫,而无需创建项目。

    如下所示,到spiders目录 下,直接用命令执行py文件

PS F:\python_work\scrapy_Sample\tutorial\tutorial\spiders> scrapy runspider baidu.py

  11)version 外部命令

    打印 Scrapy 版本。如果与它一起使用,-v它还会打印 Python、Twisted 和平台信息,这对于错误报告很有用。

PS F:\python_work\scrapy_Sample\tutorial\tutorial\spiders> scrapy version -v
Scrapy       : 2.6.1
lxml         : 4.9.0.0
libxml2      : 2.9.12
cssselect    : 1.1.0
parsel       : 1.6.0
w3lib        : 1.22.0
Twisted      : 22.4.0
Python       : 3.10.5 (tags/v3.10.5:f377153, Jun  6 2022, 16:14:13) [MSC v.1929 64 bit (AMD64)]
pyOpenSSL    : 22.0.0 (OpenSSL 3.0.3 3 May 2022)
cryptography : 37.0.2
Platform     : Windows-10-10.0.18362-SP0

参考文档:https://docs.scrapy.org/en/latest/topics/commands.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值