【Scrapy】Scrapy教程5——第一个Scrapy项目
文章目录
- Scrapy目录结构
- 第一个爬虫
- 运行爬虫
- 必要说明
-
- start_requests()和start_urls
- 如何关闭allowed_domains的限制
通过前几节的学习,我们已经了解了Scrapy的基本操作,下面我们开始第一个项目,我以本人的 网址为例进行爬虫讲解,之所以用我自己的网站,是因为我这个网站本来就是做知识分享用的,共大家学习,不会去限制爬取,现在很多网站为了防止爬虫,都会做很多限制策略,不适合新手练习,本人就提供这样一个练习平台给大家。当然维护网站不易,如果你学到了知识,也请给作者一杯咖啡的钱谢谢🙏。
注:本教程的所有代码均在windows上完成的,其他系统文件路径或系统相关命令可以会有区别。
Scrapy目录结构
我们先回过头,再看下Scrapy目录结构,这次要说明的就不是根目录和项目目录的作用了,而是要对每个文件及目录进行下说明,开始编写我们的第一个爬虫。
首先使用命令创建爬虫项目,我的网站主要是做知识内容分享的,所以项目名称就叫KnowledgeSharing,使用命令创建如下
scrapy startproject KnowledgeSharing
爬取的网页就是首页,我们爬虫名就叫shouye,使用命令创建如下
cd KnowledgeSharing
scrapy genspider shouye www.jayhgq.cn
执行以上命令后,我们会得到以下目录,我在每个文件后面加了注释,解释这个文件的作用。
├─KnowledgeSharing # 项目目录,即我说的根目录
│ │ scrapy.cfg # 项目的主要配置信息,部署时从这个文件中查询配置
│ │
│ └─KnowledgeSharing # 爬虫程序目录
│ │ items.py # 数据存储模版文件,用于结构化数据
│ │ middlewares.py # 中间件文件,用于编写爬虫中间件和下载器中间件
│ │ pipelines.py # 数据处理文件,一般用来存储结构化后的数据
│ │ settings.py # 配置文件,如设置请求头、递归层数等等,所有选项必须大写,否则无效
│ │ __init__.py # 初始化文件,和python的__init__.py文件一样,用于将目录标记为包和包的初始化
│ │
│ ├─spiders # 爬虫代码文件夹
│ │ │ shouye.py # 刚刚创建的爬虫代码文件,用来编写爬虫规则
│ │ │ __init__.py # 初始化文件
第一个爬虫
知道了Scrapy的目录结构,我们可以动手开始做我们的第一个爬虫了,从目录结构中能看到,爬虫规则是写在spiders文件夹下的爬虫代码文件中,刚创建的第一个爬虫代码文件叫shouye.py
,我们打开这个文件,可以看到以下内容,同样我为代码加上了注释,一定要仔细看注释,不然后面可能有些内容会不清楚。
import scrapy # 导入scrapy包
# 爬虫类,类名一般是name+Spider,必须是Spider的子类,即需要继承Spider才能被Scrapy识别
class ShouyeSpider(scrapy.Spider):
# 爬虫名称name,一个项目中名称需要保持唯一
name = "shouye"
# allowed_domains允许访问的域名列表,默认开启,只允许爬取该列表下的页面,可在settings.py的中间件中部分关闭
allowed_domains = ["www.jayhgq.cn"]
# 第一个请求的地址默认从start_urls中获取
start_urls = ["https://www.jayhgq.cn"]
# 默认回调函数parse,用来处理请求的响应response,可以在这里进行数据提取
def parse(self, response):
pass
以上是用scrapy的genspider命令自动生成的,但是这样我们执行什么都存储不下来,我们来做下简单的改动,如下
# 导入pathlib来处理文件路径等问题
from