scrapy中文指南 第三章 项目配置和命令行使用与解析


经过上一章的学习,我们创建了项目,并且尝试创建并运行了一个爬虫。这一章我们将对整个项目进行配置,看看配置项中都有那些东西需要学习和注意的。

配置文件位置

scrapy的配置文件有两个,分别位于项目同目录的scrapy.cfg和位于项目根目录的settings.py

配置文件解读

scrapy.cfg

文件作用

该文件主要用于配置部署参数,即项目在完成开发后部署至生产环境时的配置信息,我们将在后面专门讲部署的时候,再进行非常详细的展开讲解,本处我们只是提出来,让大家有个印象。

settings.py

文件作用

Scrapysettings.py允许您自定义所有 Scrapy 组件的行为,包括核心、扩展、管道和spiders 本身。

配置项详解

打开配置文件我们会看到很多需要配置的属性,我们将对需要更改的一一进行详解。

BOT_NAME = 'tutorial'

设置项目名称

ROBOTSTXT_OBEY = True

是否遵守robots.txt协议,如果启用,Scrapy在爬取的过程中将遵守 robots.txt 政策。有关更多信息,请参阅 RobotsTxtMiddleware
robots协议指的是,网站开发者放在网站根目录下的一个文件,名叫robots.txt,该文件中定义了一些爬虫必须遵守的规则,比如那些文件、那些路径不能爬取,那些可以爬取等等。
这里我们将该值设置成False,表明我们不遵守协议。至于为什么不遵守,各位可以在评论区讨论。

DOWNLOAD_DELAY = 3

访问间隔时长,大多数的网站为了防止爬虫或者为了减轻服务器压力都会设置某个ip或者其他特征在一定时间内范围的访问次数,比如你的ip只能在1秒访问3次,如果你一秒内访问了4次,那么第4次就是不能访问成功的。
这是现在各大网站普遍采用的一个简单策略,因此我们的爬虫在爬取的过程中就需要设置间隔时长,也就是别爬的太快,爬一爬休息一下,再接着爬,否则把人家网站搞崩了就没得爬了。

COOKIES_ENABLED = False

设置启动cookie,这个很好理解,根据爬取的网站,需要就开启。

DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}

设置爬虫请求访问时的头部信息User-Agent,这个非常重要,并且要根据实际情况进行变化,如果要想爬取pc页面就可以传递pc的User-Agent,如果想要爬取移动端页面就需要调整User-Agent

获取User-Agent

那么这个User-Agent该从那里去获取呢?

在我们访问任何一个网站的时候,发出的请求都会携带这个信息,因此我们只需要再任意一个网站上右键--检查--Network--任意点击一次请求,就可以看到。如下图所示

在这里插入图片描述

将看到的请求头中的user-agent后面的值,写入到上面的对象中即可,如果想要请求的是移动端网页,则只需要把请求方式换成移动端方式即可,如下图:

在这里插入图片描述

命令行使用与解读

创建项目

您通常使用 scrapy工具做的第一件事是创建您的 Scrapy 项目:

scrapy startproject myproject [project_dir]

将在 project_dir目录下创建一个 Scrapy 项目。如果未指定 project_dir,则 project_dir将与 myproject 相同,即当前文件夹。

接下来,您可以进入新的项目目录:

cd project_dir

创建一个新的爬虫

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

如果从项目内部调用,则在当前文件夹或当前项目的 spiders 文件夹中创建一个新 spiders 。 Name 参数设置为spiders的名称,而 domain 用于生成 allowed_domains 和 start_urls scrapy的属性。

scrapy genspider mydomain mydomain.com

将会创建一个名为mydomain的爬虫,监控的域名是最后一个参数所声明的域名

注:

某些 Scrapy 命令(如 crawl)必须从 Scrapy 项目内部运行。有关哪些命令必须从项目内部运行,哪些不能运行的更多信息,请参阅下面的命令参考

命令行帮助

scrapy <command> -h

关于某些命令的帮助

scrapy -h

scrapy的帮助

命令的使用范围

scrapy有两种命令,一种只能在 Scrapy 项目内部工作(特定于项目的命令)和那些在没有活动 Scrapy 项目的情况下也可以工作的命令(全局命令),尽管从项目内部运行时它们的行为可能略有不同(因为他们会使用项目覆盖的设置)。

全局命令

  • startproject

  • genspider

  • settings

  • runspider

  • shell

  • fetch

  • view

  • version

项目内部命令

  • crawl

  • check

  • list

  • edit

  • parse

  • bench

genspider

  • 语法:scrapy genspider [-t template] <name> <domain>
  • 需要项目:否

获取scrapy支持的模板,默认为basic

scrapy genspider -l
# return
Available templates:
  basic
  crawl
  csvfeed
  xmlfeed

crawl

  • 语法:scrapy crawl spider
  • 需要项目:是

开始执行一个爬虫。例如:

scrapy crawl myspider

check

  • 语法:scrapy check [-l] <spider>
  • 需要项目:是

运行检查,对爬虫进行检查

list

  • 语法:scrapy list
  • 需要项目:是

列出当前项目中所有可用的scrapy。输出是每行一个scrapy

$ scrapy list
spider1
spider2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值