Python Scrapy项目创建(基础普及篇)

在使用Scrapy开发爬虫时,通常需要创建一个Scrapy项目。通过如下命令即可创建 Scrapy 项目:

scrapy startproject ZhipinSpider

在上面命令中,scrapy 是Scrapy 框架提供的命令;startproject 是 scrapy 的子命令,专门用于创建项目;ZhipinSpider 就是要创建的项目名。

scrapy 除提供 startproject 子命令之外,它还提供了 fetch(从指定 URL 获取响应)、genspider(生成蜘蛛)、shell(启动交互式控制台)、version(查看 Scrapy 版本)等常用的子命令。可以直接输入 scrapy 来查看该命令所支持的全部子命令。

运行上面命令,将会看到如下输出结果:

New Scrapy project ‘ZhipinSpider‘, using template directory ‘d:\python3.6\lib\site-packages\scrapy\templates\project‘, created in:
    C:\Users\mengma\ZhipinSpider

You can start your first spider with:
    cd ZhipinSpider
    scrapy genspider example example.com

上面信息显示 Scrapy 在当前目录下创建了一个 ZhipinSpider 项目,此时在当前目录下就可以看到一个 ZhipinSpider 目录,该目录就代表 ZhipinSpider 项目。

查看 ZhipinSpider 项目,可以看到如下文件结构:

ZhipinSpider
  │  scrapy.cfg
  │
  └──ZhipinSpider
      │  item.py
      │  middlewares.py
      │  pipelines.py
      │  setting.py
      │
      ├─ spiders
      │    │  __init__.py
      │    │
      │    └─ __pycache__
      └─ __pycache__

下面大致介绍这些目录和文件的作用:

  • scrapy.cfg:项目的总配置文件,通常无须修改。
  • ZhipinSpider:项目的 Python 模块,程序将从此处导入 Python 代码。
  • ZhipinSpider/items.py:用于定义项目用到的 Item 类。Item 类就是一个 DTO(数据传输对象),通常就是定义 N 个属性,该类需要由开发者来定义。
  • ZhipinSpider/pipelines.py:项目的管道文件,它负责处理爬取到的信息。该文件需要由开发者编写。
  • ZhipinSpider/settings.py:项目的配置文件,在该文件中进行项目相关配置。
  • ZhipinSpider/spiders:在该目录下存放项目所需的蜘蛛,蜘蛛负责抓取项目感兴趣的信息。

  为了更好地理解 Scrapy 项目中各组件的作用,下面给出 Scrapy 概览图,如图 1 所示。


图 1 Scrapy 概览图

在图 1 中可以看到,Scrapy 包含如下核心组件:

  • 调度器:该组件由 Scrapy 框架实现,它负责调用下载中间件从网络上下载资源。
  • 下载器:该组件由 Scrapy 框架实现,它负责从网络上下载数据,下载得到的数据会由 Scrapy 引擎自动交给蜘蛛。
  • 蜘蛛:该组件由开发者实现,蜘蛛负责从下载数据中提取有效信息。蜘蛛提取到的信息会由 Scrapy 引擎以 Item 对象的形式转交给 Pipeline。
  • Pipeline:该组件由开发者实现,该组件接收到 Item 对象(包含蜘蛛提取的信息)后,可以将这些信息写入文件或数据库中。

经过上面分析可知,使用 Scrapy 开发网络爬虫主要就是开发两个组件,蜘蛛和 Pipeline。

原文地址:https://www.cnblogs.com/jackzz/p/10726924.html

时间: 2024-10-11 03:06:47

Python Scrapy项目创建(基础普及篇)的相关文章

python django项目创建

1.安装django pip3 install django 2.创建项目 a.进入指定的目录创建项目. C:\Python3.5\Scripts\django-admin.exe startproject mysite b.创建app cd mysite python3 manage.py startapp cmdb 创建完成目录结构. mysite   - mysite (配置文件)         - urls.py 路由系统         - setting.py 所有的配置文件   

Python学习之路——基础10篇

在这一篇中我们主要学习python中求字符串的长度的方法--__len__() 无论是二维的还是一维的都是它,及其简便 根据题目学python: 给定由大写,小写字母和空格组成的字符串,返回 最后 一个单词的长度. 如果输入中不存在单词,返回 00. 注意: "单词"是指不包含空格符号的字符串 例如: 对于字符串"hello World"(不带引号), 那么返回的结果是 55: 对于字符串"abc abc "(不带引号),那么返回的结果就是 33

Python学习之路——基础07篇

在Python中,数组也是不需要定义的,但是我们可以事先申明,可以用append的方法来动态增加数组空间,也可以使用range来给数组大小添个集合,这一篇先用append方法来增加空间,(好像二维数组不能用append方法来增添第二维的空间,所以只能在一维数组的时候模拟一下了).这篇代码是一维数组事先斐波那契数列,f[0]=0,f[1]=1,f[i]=f[i-1]+f[i-2].函数可以考虑不使用返回值,当然,如果返回没用的值也是可以的. 1 #!usr/bin/ven python 3.6 2

Python学习之路——基础05篇

在python中,也分全局变量和局部变量,但是据我所知,如果在if中定义的变量是属于往下的全局变量,python中也有函数的定义和返回,通常定义一个函数是: def 函数名(参数1,参数2,...): 函数体 return x 当然,不要参数也是可以的,如果不写return则默认返回空,而在函数内是不能修改全局变量的值的,而如果你想要给函数外的全局变量赋值,你则要使用global语句说明这个变量是全局变量.否则就会出错.但是,如果不需要给全局变量重新赋值,则可以不使用global语句,但是,使用

Python学习之路——基础01篇

安装python编译环境  python数字定义是不需要int,double的,但是数据本身还是包含这些类型,这里是我在学习python过程中的一些代码和心得.   python作为一种高级语言,需要安装自己的解释器,解释你所写的代码然后还需要一个编译器(很多).首先下载一个python编译器,安装完成之后再去python官网下载最新的python 3.X然后安装,点自动设置路径,安装好之后,在计算机cmd界面输入python如果出现:即说明已经安装成功.

Python学习之路——基础03篇

python中自然也可以像其他语言中进行整除和取模,在python中尤其要注意代码的格式和if语句的使用,稍有不但,程序逻辑就会出错. #!usr/bin/env python 3.6 # -*- coding: -utf8- -*- x=input() a=int(x[0]) b=int(x[2]) c=a%b if c==0: print('YES') else: print('NO')

Python学习之路——基础04篇

在python中,有很强大的for循环和很强大的数组操作,一些在其他语言中复杂的代码,在python中可以一行解决,下面是python中解决a,b数组所有偶数求和,存在c数组中的简单代码. #!/usr/bin/env python3.6 #-*- coding: -utf8- -*- x=[1,2,3,4] y=[4,5,6,7] c=[a + b for a in x for b in y if a%2 == 0 and b%2 ==0] print(c)

Python学习之路——基础02篇

如果要用python进行像ACM题目中那样的多输入咋办?由于在python中我现在只发现了input函数进行输入,只能输入字符串,但是input有函数可以去掉空格,所以可以用处理字符串的方法,将里面的字符取出来,再强制转换成int类型.下面是例子(对一个一维数组进行求和,它是多样例的): 1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 4 x = input() 5 print(x.split()) 6 for i in x.split(

Python学习之路——基础09篇

在Python中,一个数组可以同时存放整型数和字符串,因为在python中没有严格的变量类型的区分,你给他赋值什么类型的,他就是什么类型的,所以,这给我们处理多个类型的变量提供了方便,python中与其他语言一样也有while循环,效果类型,使用格式要符合python的语法规则. 根据题目来学python: 小米是一个幼儿园老师,每学期的泥塑课上,她都会给每个学生发不超过 250250立方厘米的等量橡皮泥,教大家做泥塑.在上课过程中,她发现每个班都恰好有一个小朋友会去抢另一个小朋友的橡皮泥,于是