3.1 scrapy框架 -- 安装与基本使用
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框架 -- 安装与基本使用相关推荐
- python的Scrapy框架安装报错:building 'twisted.test.raiser' extension error
python的Scrapy框架安装报错:building 'twisted.test.raiser' extension 在https://www.lfd.uci.edu/~gohlke/python ...
- 初识 scrapy 框架 - 安装
前面豆子学习了基本的urllib的模块,通过这个模块可以写一些简单的爬虫文件.如果要处理大中型的爬虫项目,urllib就显得比较low了,这个时候可以使用scrapy框架来实现,很多基本的处理在scr ...
- Scrapy框架安装教程
框架介绍 Scrapy是一个快速.高层次.轻量级的屏幕抓取和web抓取的python爬虫框架,是目前Python中最受欢迎的爬虫框架之一,除此之外还可用于数据挖掘.监测.自动化测试.信息处理等. 安装 ...
- Python爬虫进阶三之Scrapy框架安装配置
初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows 平台: 我的系统是 ...
- Python 爬虫进阶三之 Scrapy 框架安装配置
初级的爬虫我们利用 urllib 和 urllib2 库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架 Scrapy,这安装过程也是煞费苦心哪,在此整理如下. 官网 官方安装文档 安装p ...
- python爬虫架构设置_Python爬虫进阶三之Scrapy框架安装配置
初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows 平台: 我的系统是 ...
- Python的scrapy框架安装与使用
** 一.安装步骤: ** 1.pip install twisted: 2.pip install pypiwin32; 3.pip install scrapy; ** 二.框架讲解: ** // ...
- 十 web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令
Scrapy框架安装 1.首先,终端执行命令升级pip: python -m pip install --upgrade pip 2.安装,wheel(建议网络安装) pip install whee ...
- 零基础学Python-爬虫-2、scrapy框架(测试案例篇·技术点在后面文章内讲解)【测试将一篇小说的所有访问路径与标题存储到一个文件下】
本套课程正式进入Python爬虫阶段,具体章节根据实际发布决定,可点击[python爬虫]分类专栏进行倒序观看: [重点提示:请勿爬取有害他人或国家利益的内容,此课程虽可爬取互联网任意内容,但无任何收 ...
- scrapy获取a标签的连接_Python爬虫 scrapy框架初探及实战!
Scrapy框架安装 操作环境介绍 操作系统:Ubuntu19.10 Python版本:Python3.7.4 编译器:pycharm社区版 安装scrapy框架(linux系统下) 安装scrapy ...
最新文章
- 送你一份 Nginx 最佳入门手册
- linux下使用expect+scp+shell实现分布式集群系统安装,升级,部署
- vue在微信里面的兼容问题_vuejs在安卓系统下微信X5内核这个兼容性问题如何破?...
- maven上传源码脚本
- 2014年江苏省计算机二级c语言考试大纲,「二级C语言」江苏省计算机二级VFP考试大纲...
- 漫画:什么是插入排序?
- 基于Echarts+HTML5可视化数据大屏展示—Echart图例使用
- vim 删除一行_Vim 日常命令
- c语言字符括号怎么表示什么意思,请问C语言中的bioskey(0)是啥意思,括号里的值又有啥用?...
- 群体智能优化算法之萤火虫群优化算法(Glowworm Swarm Optimization,GSO)
- 建筑电气工程设计常用图形和文字符号_建筑电气施工图设计正误案例对比
- 两角和与差的余弦公式的五种推导方法之对比
- 转:人生有三重境界:看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水...
- health_parent的linux环境
- iOS 如何判断静音开关是否打开
- 【VUE】浏览器消息通知(声音提醒,标题栏闪动,弹框提醒)
- 虚拟化——ovirt删除host主机操作步骤
- 5脚耳机插座原理图_【连载十九】手机维修电路基础原理图
- 技术平台与业务平台的区别
- 初等数论 课堂笔记 第二章 -- 费马问题