当前位置: 首页 > article >正文

【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

http://www.kler.cn/a/551928.html

相关文章:

  • 深入探索 DeepSeek 在数据分析与可视化中的应用
  • Linux驱动学习(二)--字符设备
  • mapbox基础,使用geojson加载line线图层,实现纯色填充、图片填充、虚线和渐变效果
  • Cherry Studio 接入deepseek
  • CCF-CSP第36次认证第二题——梦境巡查【NA!!前缀和思想】
  • python爬虫系列课程1:初识爬虫
  • 鸿蒙NEXT开发-元服务的基本介绍和创建
  • 数据库连接池与池化思想
  • 2024年国赛高教杯数学建模C题农作物的种植策略解题全过程文档及程序
  • 文档检测校正的重要性
  • 自制简单的图片查看器(python)
  • Maven 构建性能分析:瓶颈排查与优化建议
  • 搜索旋转数组
  • 基于SpringBoot+Vue的在线电影购票系统的设计与实现
  • Visual Studio Code的下载安装与汉化
  • Medians
  • 前端(AJAX)学习笔记(CLASS 2):图书管理案例以及图片上传
  • Windows 环境下 Grafana 安装指南
  • 【够用就好002-2】发布github项目仓库补充
  • 现代卷积神经网络