1.scrapy的安装

2.使用命令行创建, 启动项目

3.项目目录结构

4.scrapy架构与任务处理流程

5.简单使用示例:


1.scrapy的安装

 1 # 1.在安装scrapy前需要安装好相应的依赖库, 再安装scrapy, 具体安装步骤如下:
 2     (1).安装lxml库: pip install lxml
 3     (2).安装wheel: pip install wheel
 4     (3).安装twisted: pip install twisted文件路径
 5     (twisted需下载后本地安装,下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted)
 6     (版本选择如下图,版本后面有解释,请根据自己实际选择)
 7     (4).安装pywin32: pip install pywin32
 8     (注意:以上安装步骤一定要确保每一步安装都成功,没有报错信息,如有报错自行百度解决)
 9     (5).安装scrapy: pip install scrapy
10     (注意:以上安装步骤一定要确保每一步安装都成功,没有报错信息,如有报错自行百度解决)
11     (6).成功验证:在cmd命令行输入scrapy,显示Scrapy1.6.0-no active project,证明安装成功 


2.使用命令行创建, 启动项目

1 1.手动创建一个目录test
2 2.在test文件夹下创建爬虫项目为spiderpro: scrapy startproject spiderpro
3 3.进入项目文件夹: cd spiderpro
4 4.创建爬虫文件: scrapy genspider 爬虫名 url地址

返回顶部


3.项目目录结构

 1 spiderpro
 2   spiderpro # 项目目录
 3     __init__
 4     spiders:爬虫文件目录
 5       __init__
 6       tests.py:爬虫文件
 7     items.py:定义爬取数据持久化的数据结构
 8     middlewares.py:定义中间件
 9     pipelines.py:管道,持久化存储相关
10     settings.py:配置文件
11   venv:虚拟环境目录
12   scrapy.cfg: scrapy项目配置文件

说明:
  (1).spiders:其内包含一个个Spider的实现, 每个Spider是一个单独的文件
  (2).items.py:它定义了Item数据结构, 爬取到的数据存储为哪些字段
  (3).pipelines.py:它定义Item Pipeline的实现
  (4).settings.py:项目的全局配置
  (5).middlewares.py:定义中间件, 包括爬虫中间件和下载中间件
  (6).scrapy.cfg:它是scrapy项目的配置文件, 其内定义了项目的配置路径, 部署相关的信息等

返回顶部


4.scrapy架构与任务处理流程

(1).架构:

  Scrapy Engine: 这是引擎,负责Spiders、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等等!(像不像人的身体?)

  Scheduler(调度器): 它负责接受引擎发送过来的requests请求,并按照一定的方式进行整理排列,入队、并等待Scrapy Engine(引擎)来请求时,交给引擎。

  Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spiders来处理,

  Spiders:它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),

  Item Pipeline:它负责处理Spiders中获取到的Item,并进行处理,比如去重,持久化存储(存数据库,写入文件,总之就是保存数据用的)

  Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件

  Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spiders中间‘通信‘的功能组件(比如进入Spiders的Responses;和从Spiders出去的Requests)

返回顶部

(2).工作流:

  1.spider将请求发送给引擎, 引擎将request发送给调度器进行请求调度

  2.调度器把接下来要请求的request发送给引擎, 引擎传递给下载器, 中间会途径下载中间件

  3.下载携带request访问服务器, 并将爬取内容response返回给引擎, 引擎将response返回给spider

  4.spider将response传递给自己的parse进行数据解析处理及构建item一系列的工作, 最后将item返回给引擎, 引擎传递个pipeline

  5.pipe获取到item后进行数据持久化

  6.以上过程不断循环直至爬虫程序终止

返回顶部


5.简单使用示例:

1 #需求:爬取糗事百科热门板块,每一条的标题,好笑,评论条数及作者信息,解析爬取的信息数据,定制item数据存储结构,最终将数据存储于MongoDB数据库中.
2
3 #思路与步骤:
4     1.创建项目,起始url为:https://www.qiushibaike.com/
5     2.创建item类,定义要持久化存储的字段
6     3.定义parse解析类,并将字段信息存储在item中
7     4.定义pipeline类,进行数据持久化
8     5.在setting配置文件中配置要配置的项

1 # 创建项目, 起始url为:https://www.qiushibaike.com/
2
3 # 1.创建项目命令:
4     scrapy startproject qsbk # 创建项目
5     cd qsbk # 切换到项目目录
6     scrapy genspider qsbk_hot www.qiushibaike.com # 创建爬虫文件, qsbk_hot为爬虫名, 后网址为起始url

返回顶部

1 # 创建item类, 用于存储目标数据
2 import scrapy
3 classQsbkItem(scrapy.Item):
4     title = scrapy.Field()# 标题
5     lau = scrapy.Field()# 好笑数
6     comment = scrapy.Field()# 评论数
7     auth = scrapy.Field()# 作者

 1 # spider文件中定义解析数据的方法
 2 classQsbkHotSpider(scrapy.Spider):
 3 name ='qsbk_hot'
 4 # allowed_domains = ['www.qiushibaike.com'] # 无用, 可注释掉
 5 start_urls =['http://www.qiushibaike.com/']
 6
 7 # 思路:一条热点数据在前端中对应一个li标签, 将一页中的所有li标签取出, 再进一步操作
 8 def parse(self, response):
 9
10   li_list = response.selector.xpath('//div[@class="recommend-article"]/ul/li')
11
12   # 循环li标签组成的列表, 先实例化item, 再取需要的字段, 并该item对象的相应属性赋值
13   for li in li_list:
14
15     # 实例化item对象
16     item =QsbkItem()
17
18     # 解析获取title(标题), lau(好笑数), comment(评论数), auth(作者)等信息
19     title = li.xpath('./div[@class="recmd-right"]/a/text()').extract_first()
20     lau = li.xpath('./div[@class="recmd-right"]/div[@class="recmd-detail clearfix"]/div/span[1]/text()').extract_first()
21     comment = li.xpath('./div[@class="recmd-right"]/div[@class="recmd-detail clearfix"]/div/span[4]/text()').extract_first()
22     auth = li.xpath('./div[@class="recmd-right"]/div[@class="recmd-detail clearfix"]/a/span/text()').extract_first()
23
24     # 因为部分热点数据还没有评论和好笑数, 所以对齐做一下处理
25     if not lau:
26       lau =None
27     if not comment:
28       comment =None
29
30     # 将字段的值存储在item的属性中
31     item["title"]= title
32     item["lau"]= lau
33     item["comment"]= comment
34     item["auth"]= auth
35
36     # 返回item, 框架会自动将item传送至pipeline中的指定类
37     yield item

返回顶部

 1 # 在pipeline中定义管道类进行数据的存储
 2 import pymongo
 3 from qsbk.settings import MONGO_NAME # MONGO_NAME在配置文件中定义的, 其值为"qsbk"
 4 from qsbk.settings import MONGO_URL_PORT # MONGO_URL_PORT在配置文件中定义, 其值为"MongoDB地址:端口"
 5
 6
 7 classQsbkPipeline(object):
 8
 9   # 连接MongoDB数据库
10   mongo_client = pymongo.MongoClient(MONGO_URL_PORT)
11   mongo_db = mongo_client[MONGO_NAME]
12
13   def process_item(self, item, spider):
14     name =self.__class__.__name__
15
16     # 向数据库中出入数据
17     self.mongo_db[name].insert(dict(item))
18
19     # 此处return item是为了下一个管道类能够接收到item进行存储
20     return item
21
22   def close_spider(self):
23     # 关闭数据库连接
24     self.mongo_client.close()

返回顶部

 1 # 此示例中配置文件中的配置的项, 注意是不是全部的配置, 是针对该项目增加或修改的配置项
 2
 3 # MongoDB数据库配置
 4 MONGO_URL_PORT ='127.0.0.1:27017'# 设置数据库的连接地址和端口号
 5 MONGO_NAME ='qsbk'# 数据库要存储在哪个库中
 6
 7 # 忽略robots协议
 8 ROBOTSTXT_OBEY =False
 9
10 # 管道类的注册配置
11 ITEM_PIPELINES ={
12 'qsbk.pipelines.QsbkPipeline':300,
13 }

上面的例子就是scrapy的简单应用, 涉及到数据的请求, 数据的解析, 数据的持久化存储等操作

返回顶部

转载于:https://www.cnblogs.com/Jermy/articles/10996198.html

3.1 scrapy框架 -- 安装与基本使用相关推荐

  1. python的Scrapy框架安装报错:building 'twisted.test.raiser' extension error

    python的Scrapy框架安装报错:building 'twisted.test.raiser' extension 在https://www.lfd.uci.edu/~gohlke/python ...

  2. 初识 scrapy 框架 - 安装

    前面豆子学习了基本的urllib的模块,通过这个模块可以写一些简单的爬虫文件.如果要处理大中型的爬虫项目,urllib就显得比较low了,这个时候可以使用scrapy框架来实现,很多基本的处理在scr ...

  3. Scrapy框架安装教程

    框架介绍 Scrapy是一个快速.高层次.轻量级的屏幕抓取和web抓取的python爬虫框架,是目前Python中最受欢迎的爬虫框架之一,除此之外还可用于数据挖掘.监测.自动化测试.信息处理等. 安装 ...

  4. Python爬虫进阶三之Scrapy框架安装配置

    初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows 平台: 我的系统是 ...

  5. Python 爬虫进阶三之 Scrapy 框架安装配置

    初级的爬虫我们利用 urllib 和 urllib2 库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架 Scrapy,这安装过程也是煞费苦心哪,在此整理如下. 官网 官方安装文档 安装p ...

  6. python爬虫架构设置_Python爬虫进阶三之Scrapy框架安装配置

    初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows 平台: 我的系统是 ...

  7. Python的scrapy框架安装与使用

    ** 一.安装步骤: ** 1.pip install twisted: 2.pip install pypiwin32; 3.pip install scrapy; ** 二.框架讲解: ** // ...

  8. 十 web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令

    Scrapy框架安装 1.首先,终端执行命令升级pip: python -m pip install --upgrade pip 2.安装,wheel(建议网络安装) pip install whee ...

  9. 零基础学Python-爬虫-2、scrapy框架(测试案例篇·技术点在后面文章内讲解)【测试将一篇小说的所有访问路径与标题存储到一个文件下】

    本套课程正式进入Python爬虫阶段,具体章节根据实际发布决定,可点击[python爬虫]分类专栏进行倒序观看: [重点提示:请勿爬取有害他人或国家利益的内容,此课程虽可爬取互联网任意内容,但无任何收 ...

  10. scrapy获取a标签的连接_Python爬虫 scrapy框架初探及实战!

    Scrapy框架安装 操作环境介绍 操作系统:Ubuntu19.10 Python版本:Python3.7.4 编译器:pycharm社区版 安装scrapy框架(linux系统下) 安装scrapy ...

最新文章

  1. 送你一份 Nginx 最佳入门手册
  2. linux下使用expect+scp+shell实现分布式集群系统安装,升级,部署
  3. vue在微信里面的兼容问题_vuejs在安卓系统下微信X5内核这个兼容性问题如何破?...
  4. maven上传源码脚本
  5. 2014年江苏省计算机二级c语言考试大纲,「二级C语言」江苏省计算机二级VFP考试大纲...
  6. 漫画:什么是插入排序?
  7. 基于Echarts+HTML5可视化数据大屏展示—Echart图例使用
  8. vim 删除一行_Vim 日常命令
  9. c语言字符括号怎么表示什么意思,请问C语言中的bioskey(0)是啥意思,括号里的值又有啥用?...
  10. 群体智能优化算法之萤火虫群优化算法(Glowworm Swarm Optimization,GSO)
  11. 建筑电气工程设计常用图形和文字符号_建筑电气施工图设计正误案例对比
  12. 两角和与差的余弦公式的五种推导方法之对比
  13. 转:人生有三重境界:看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水...
  14. health_parent的linux环境
  15. iOS 如何判断静音开关是否打开
  16. 【VUE】浏览器消息通知(声音提醒,标题栏闪动,弹框提醒)
  17. 虚拟化——ovirt删除host主机操作步骤
  18. 5脚耳机插座原理图_【连载十九】手机维修电路基础原理图
  19. 技术平台与业务平台的区别
  20. 初等数论 课堂笔记 第二章 -- 费马问题

热门文章

  1. Java Web项目开发从0开始的要点!
  2. 几种线程池的实现算法分析
  3. 少讲大道理,多解决小问题
  4. Javascript 第五章总结:A trip to Objectville
  5. Jmeter (三十)jmeter+ant+jenkins持续集成
  6. 基于stm32智能车的设计(ucosiii)---北京之行
  7. 制作Makefile中 ** missing separator 错误解决
  8. 外部类与嵌套类的区别
  9. C#使用mybatis学习笔记
  10. C#如何获取物理网卡,虚拟网卡,以及无线网卡