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
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值