(二)Scrapy的初始化

本文介绍了Scrapy项目初始化过程,包括startproject与genspider命令的工作原理。startproject用于创建新项目并配置基本结构,genspider则用于生成爬虫模板。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始化一个scrapy项目时往往是通过startproject 和 genspider两个命令。
了解scrapy进行命令输入时的逻辑是怎样实现的之后,我们可以看看commands文件夹下这两个命令是如何运行的。

(1) startproject
当我们新建一个项目时通过scrapy startproject <project_name> [project_dir] 命令实现。
输入这一条命令时,首先会对project_name的值进行判断是否合法;如果有设置project_dir的话会在对应位置新建scrapy.cfg文件。
当命名和参数没有问题时,就会通过模板进行复制。
模板文件在templates文件夹下,所以我们初始化的项目结构就和文件夹下的project的结构一模一样。
在这里插入图片描述
这个地方可以注意一下的就是string.Template的用法,之前字符串的格式化往往是使用format方法,而这儿通过string.Template将原始的模板文件复制后通过传入的参数将文件中的项目名替换为初始化的项目名。

在这里插入图片描述

# string.Template的用法
import string
source_str = 'My name is $name'
string.Template(source_str).substitute(name='chenzilong')
# 这里就会将$name替换, 输出 'My name is chenzilong'

在复制文件初始化结束后,就会输出一些引导信息,接下来就是生成一个spider

(2)genspider
这儿可以注意一下的是子类重写的父类的add_options方法,之前提到过cmdline.py中对每个cmd对象有绑定自身的各种参数,命令行参数的操作都是通过optparse.OptionParser管理的。genspider中重写的add_options通过设置参数后,在run方法中进行参数的判断,然后进行对应的操作,生成模板文件的操作与前面提到的startproject类似。

在这里插入图片描述
(3)crawl和runspider
这两个命令都是运行爬虫的命令,可以比较一下两个run方法,就可以看出之间的差别就是runspider通过文件启动,导入文件为模块,获取模块下所有Spider的子类,取最后一个加载;crawl后面接上的参数则是spider的名字。抓取的实际行为则是通过crawler_process实现,后面我们将看看crawler_process究竟是什么和如何实现的。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值