爬虫基础分享Scrapy框架流程图与安装
从头开发一个爬虫程序是一项烦琐的工作,为了避免因制造轮子而消耗大量时间,在实际应用中我们可以选择使用一些优秀的爬虫框架,使用框架可以降低开发成本,提高程序质量,让我们能够专注于业务逻辑。所以,我们一起来了解开源的爬虫框架Scrapy。
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中,并且是跨平台的,在Linux、MaxOS以及windows平台都可以使用。
1.Scrapy主要包括了以下组件:
引擎(Scrapy):
用来处理整个系统的数据流处理, 触发事务(框架核心)调度器(Scheduler) :
调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎。由它来决定下一个要抓取的网址是什么, 同时去除重复的网址下载器(Downloader) :
用于下载网页内容,并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)爬虫(Spiders) :
爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面项目管道(Pipeline):
负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。下载器中间件(Downloader Middlewares):
位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应。爬虫中间件(Spider Middlewares):
介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求输出。调度中间件(Scheduler Middewares) :
介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。
2.Scrapy运行流程大概如下:
- 引擎从调度器中取出一个链接(URL)用于接下来的抓取
- 引擎把URL封装成一个请求(Request)传给下载器
- 下载器把资源下载下来,并封装成应答包(Response)
- 引擎将URL通过下载中间件(请求(request)方向)转发给下载器(Downloader)
- 解析出实体(Item),则交给实体管道进行进一步的处理
- 解析出的是链接(URL),则把URL交给调度器等待抓取
- Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎
- 引擎将(Spider返回的)爬取到的Item给Item Pipeline,将(Spider返回的)Request给调度器
3.scrapy查询语法:
当我们爬取大量的网页,如果自己写正则匹配,会很麻烦,也很浪费时间,令人欣慰的是,scrapy内部支持更简单的查询语法,帮助我们去html中查询我们需要的标签和标签内容以及标签属性。下面逐一进行介绍:
- 查询子子孙孙中的某个标签(以div标签为例)://div
- 查询儿子中的某个标签(以div标签为例):/div
- 查询标签中带有某个class属性的标签://div[@class=‘c1’]即子子孙孙中标签是div且class=‘c1’的标签
- 查询标签中带有某个class=‘c1’并且自定义属性name=‘alex’的标签://div[@class=‘c1’][@name=‘alex’]
- 查询某个标签的文本内容://div/span/text() 即查询子子孙孙中div下面的span标签中的文本内容
- 查询某个属性的值(例如查询a标签的href属性)://a/@href
不知不觉收集了这么多电子书,大部分我都翻过,对于学习Python动力满满,如果你们有其他推荐的书籍也可以在评论区推给我。有需要的也可私信我共享。
Python学习电子书籍:
4.scrapy安装
scrapy官网:https://scrapy.org/
scrapy中文文档:https://www.osgeo.cn/scrapy/intro/overview.html
安装方式
在任意操作系统下,可以使用pip安装Scrapy,例如:
pip install scrapy
安装完成后我们需要测试安装是否成功,通过如下步骤确认:
在终端中测试能否执行scrapy这条命令
scrapy 2.4.0 - no active projectusage:scrapy <command>[options] [args]Available commands :bench Run quick benchmark testfetch Fetch a URL using the scrapy down1oadergenspider Generate new spider using pre-defined temp1atesrunspider Run a self-contained spider (without creating a project)settings Get settings valuesshe11 Interactive scraping consolestartproject create new projectversion Print scrapy versionview open URL in browser,as seen by scrapy[ more ] More commands available when run from project directoryuse "scrapy <command> -h" to see more info about a command
输入scrapy bench
测试连通性,如果出现以下情况表示安装成功:
通过了以上两项检测,说明Scrapy安装成功了。如上所示,我们安装的是当前最新版本2.4.0。
注意:
在安装Scrapy的过程中可能会遇到缺少VC++
等错误,可以安装缺失模块的离线包
成功安装后,在CMD下运行scrapy出现上图不算真正成功,检测真正是否成功使用scrapybench测试,如果没有提示错误,就代表成功安装。
全局命令
scrapy 2.4.0 - no active projectusage:scrapy <command>[options] [args]Available commands :bench Run quick benchmark test #测试电脑性能fetch Fetch a URL using the scrapy down1oader#将源代码下载下来并显示出来genspider Generate new spider using pre-defined temp1ates#创建一个新的spider文件runspider Run a self-contained spider (without creating a project)# 这个和通过craw1启动爬虫不同,scrapy runspider爬虫文件名称settings Get settings values#获取当前的配置信息she11 Interactive scraping console#进入scrapy 的交互模式startproject create new project#创建爬虫项目version Print scrapy version#显示scrapy框架的版本view open URL in browser,as seen by scrapy#将网页document内容下载下来,并且在浏览器显示出来[ more ] More commands available when run from project directory
use "scrapy <command> -h" to see more info about a command
5.使用scrapy爬虫简洁步骤:
1.新建项目: 创建项目 scrapy project XXX
2. scarpy genspider xxx “http://www.xxx.com”
3. 明确目标:编写 items.py
, 明确需要提取的数据
4. 制作爬虫:编写 spiders/xxx.py
, 编写爬虫文件,处理请求和响应,以及提取数据(yield item)
5. 存储内容:编写 pipelines.py
, 编写管道文件,处理spider返回item数据,比如本地数据持久化,写文件或存到表中
6. 编写 settings.py
,启动管道组件ITEM_PIPELINES
,以及其他相关设置
7. 执行爬虫 scrapy crawl xxx
有时候被爬取的网站可能做了很多限制,所以,我们请求时可以添加请求报头,scrapy 给我们提供了一个很方便的报头配置的地方,settings.py
中,我们可以开启:
# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Tencent (+http://www.yourdomain.com)'
User-AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6)AppleWebKit/537.36 (KHTML, like Gecko)Chrome/62.0.3202.94 Safari/537.36"# Override the default request headers:
DEFAULT_REQUEST_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en',
}
scrapy 最大的适用场景是爬取静态页面,性能非常强悍,但如果要爬取动态的json数据,那就没必要了。
爬虫基础分享Scrapy框架流程图与安装相关推荐
- 爬虫基础(五)-----scrapy框架简介
---------------------------------------------------摆脱穷人思维 <五> :拓展自己的视野,适当做一些眼前''无用''的事情,防止进入只关 ...
- Python爬虫—Scrapy框架—Win10下载安装
Python爬虫-Scrapy框架-Win10下载安装 1. 下载wheel 2.下载twisted 3. 下载pywin32 4. 下载安装Scrapy 5. 创建一个scrapy项目 6. fir ...
- Python爬虫5.3 — scrapy框架spider[Request和Response]模块的使用
Python爬虫5.3 - scrapy框架spider[Request和Response]模块的使用 综述 Request对象 scrapy.Request()函数讲解: Response对象 发送 ...
- 十 web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令
Scrapy框架安装 1.首先,终端执行命令升级pip: python -m pip install --upgrade pip 2.安装,wheel(建议网络安装) pip install whee ...
- java启动scrapy爬虫,爬虫入门之Scrapy 框架基础功能(九)详解
Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非 ...
- python爬虫之使用Scrapy框架编写爬虫
转自:http://www.jb51.net/article/57183.htm 前面的文章我们介绍了Python爬虫框架Scrapy的安装与配置等基本资料,本文我们就来看看如何使用Scrapy框架方 ...
- Scrapy框架流程图详解
(一).Scrapy框架介绍: 我们写一个爬虫,需要做很多事情,比如:发送网络请求.数据解析.数据存储.反爬虫.反反爬虫(更换ip代理.设置请求头等).异步请求等.这些事情在我们每一次写爬虫代码的时候 ...
- python爬虫入门(六) Scrapy框架之原理介绍
Scrapy框架 Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬 ...
- Scrapy框架流程图解析
今日语:心空,望望远方的高楼:心属,依然停留 接下来就放一张scrapy的架构图喽~(绿线是数据流向) 简单叙述一下每层图的含义吧: Spiders(爬虫):它负责处理所有Responses,从中分析 ...
最新文章
- wrs-tuya-cloud
- HTML Input 属性
- 文件服务器存储,文件服务器存储
- Android的第一个工程,Android Things:撸起袖子来创建第一个Things工程
- 定义域是取交集吗_高中数学;函数定义域秒解技巧(学好函数突破数学)
- 大鱼风控笔记 3:量化风控政策的关注点
- C# 图片处理之:彩色图片转为黑白图
- maven仓库--私服(Nexus的配置使用)
- Mysql的sql语句基础大全,仅供个人笔记参考,由于创建过程只求速度,所以结构比较乱,请不要打开,如有需要,请自行查阅其他文献
- 微信字体调大后页面错乱问题
- 百度指数批量查询器,百度指数
- 如何下载邯郸市卫星地图高清版大图
- 彼时彼刻,正如此时此刻——评《让×××飞》
- php checkbox多选框默认选中的实现。
- 【两周快速入门pr】三、定格动画制作-基础操作成就你的脑洞
- cadence修改板框倒角_Allegro软件中如何对板框进行倒角及倒角不成功解决方法
- pwm一个时间单位_「硬见小百科」什么是PWM“死区”?
- 初见Manjaro:Manjaro 安装配置流程
- Jquery字符UrlEncode 编码、解码 --C#UrlEncode
- 微信小程序API----授权登录拿到用户头像昵称等信息