scrapy安装_爬虫框架Scrapy简介与安装

Scrapy 框架

  • Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。
  • 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。
  • Scrapy 使用了 Twisted['twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

Scrapy架构图(绿线是数据流向):

bc1a73d583548dcf897a4605d3877bd5.png

Scrapy架构图(绿线是数据流向)

Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

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

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

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.

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

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

Scrapy的运作流程

代码写好,程序开始运行...

  1. 引擎:Hi!Spider, 你要处理哪一个网站?
  2. Spider:老大要我处理xxxx.com。
  3. 引擎:你把第一个需要处理的URL给我吧。
  4. Spider:给你,第一个URL是xxxxxxx.com。
  5. 引擎:Hi!调度器,我这有request请求你帮我排序入队一下。
  6. 调度器:好的,正在处理你等一下。
  7. 引擎:Hi!调度器,把你处理好的request请求给我。
  8. 调度器:给你,这是我处理好的request
  9. 引擎:Hi!下载器,你按照老大的下载中间件的设置帮我下载一下这个request请求
  10. 下载器:好的!给你,这是下载好的东西。(如果失败:sorry,这个request下载失败了。然后引擎告诉调度器,这个request下载失败了,你记录一下,我们待会儿再下载)
  11. 引擎:Hi!Spider,这是下载好的东西,并且已经按照老大的下载中间件处理过了,你自己处理一下(注意!这儿responses默认是交给def parse()这个函数处理的)
  12. Spider:(处理完毕数据之后对于需要跟进的URL),Hi!引擎,我这里有两个结果,这个是我需要跟进的URL,还有这个是我获取到的Item数据。
  13. 引擎:Hi !管道 我这儿有个item你帮我处理一下!调度器!这是需要跟进URL你帮我处理下。然后从第四步开始循环,直到获取完老大需要全部信息。
  14. 管道``调度器:好的,现在就做!

注意!只有当调度器中不存在任何request了,整个程序才会停止,(也就是说,对于下载失败的URL,Scrapy也会重新下载。)

制作 Scrapy 爬虫 一共需要4步:

  • 新建项目 (scrapy startproject xxx):新建一个新的爬虫项目
  • 明确目标 (编写items.py):明确你想要抓取的目标
  • 制作爬虫 (spiders/xxspider.py):制作爬虫开始爬取网页
  • 存储内容 (pipelines.py):设计管道存储爬取内容

Scrapy的安装介绍

Scrapy框架官方网址:http://doc.scrapy.org/en/latest

Scrapy中文维护站点:http://scrapy-chs.readthedocs.io/zh_CN/latest/index.html

Windows 安装方式

  • Python 2 / 3
  • 升级pip版本:pip install --upgrade pip
  • 通过pip 安装 Scrapy 框架 pip install Scrapy

Ubuntu 需要9.10或以上版本安装方式

  • Python 2 / 3
  • 安装非Python的依赖 sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
  • 通过pip 安装 Scrapy 框架 sudo pip install scrapy

安装后,只要在命令终端输入 scrapy,提示类似以下结果,代表已经安装成功

8eb0bc679e32aaac9d292bfdf511dfc1.png

在命令终端输入 scrapy

具体Scrapy安装流程参考:http://doc.scrapy.org/en/latest/intro/install.html#intro-install-platform-notes 里面有各个平台的安装方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端面试题(附上自己的回答)

一些开放性题目 1.自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势。 2.项目介绍? 3.如何看待前端开发? 4.平时是如何学习前端开发的? 5.未来三到五年的规划是怎样的? position…

汇编语言的基础知识

汇编语言是在硬件上工作的编程语言,我们需要了解硬件系统的结构,才能有效的用汇编语言对其进行编程。 一:汇编语言的组成 1)汇编指令:机器码的助记符,有对应的机器码。 2)伪指令:没有…

亚马逊Simple Worklfow服务的骆驼演示

在上一篇文章中,我解释了为什么AWS SWF服务很好,并宣布了新的Camel SWF组件。 现在,组件文档已准备就绪, 这是一个简单的完全可用的演示。 它包含三个独立的独立骆驼路线: 工作流生产者允许我们与工作流进行交互。 它…

CODEVS 1205 单词反转

嗯.... 这道题看起来挺像一个字符串的题,但其实却错了,它实质上却用了一个栈进行了一个模拟(当然还有一种鬼畜的做法,下面也会介绍到..... 首先先看题: 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题…

python 定义函数为什么有个长线_关于格式化:如何在Python中打破这条长线?

如何设置这样的长行格式?我想让它的宽度不超过80个字符:logger.info("Skipping {0} because its thumbnail was already in our system as {1}.".format(line[indexes[url]], video.title))这是我最好的选择吗?url "Skipping …

NodeJS中resolve添加地址无效

今天一个朋友在群里问了这样一个问题,他使用url.resolve()添加地址无效,我看了一下,发现是他没有注意细节, resolve可以在二级目录下增加,他使用的时候只是一级目录,所以添加会有问题。他使用的是如下这种…

centos配置jdk的环境变量

1、首先呢,centos下的JDK环境配置分两种情况,一直是root用户级别的jdk配置,另一种是其他用户组级别的配置。这里讲解的是root用户级别的配置。 我们已经下载解压好了jdk的目录。如下 2、编辑环境变量的配置文件: vi /etc/profile…

Python之字符串转换为日期、结合时区的日期操作

一、字符串转换为日期 方法一 s 2019-01-20 print(datetime.strptime(s, %Y-%m-%d)) # 2019-01-20 00:00:00 方法二 def parse_ymd(s):year_s, mon_s, day_s s.split(-)return datetime(int(year_s), int(mon_s), int(day_s)) s 2019-01-20 res parse_ymd(s) print(res) …

项目学生:带有Jersey的Web服务客户端

这是Project Student的一部分。 其他职位包括带有Jersey的Webservice Client , 业务层和带有Spring Data的持久性 。 RESTful Web应用程序洋葱的第一层是Web服务客户端。 它可以用来模仿包含AJAX内容的网页,也可以被webapp的编程用户用来模仿。 注意&am…

华为摄像机搜索软件_别人的终点华为的起点!用普惠AI守护城市安全

看点:华为好望的求索启示录!如何让老百姓用上实惠的AI?你也许不知道,高空抛物已是城市生活中的一大难以治理的安全隐患。一个小小的烟头、水果从高处扔下来,就可能引起严重火灾、人员伤亡、财物破坏,事发后…

在WebGL场景中进行棋盘操作的实验

这篇文章讨论如何在基于Babylon.js的WebGL场景中,建立棋盘状的地块和多个可选择的棋子对象,在点选棋子时显示棋子的移动范围,并且在点击移动范围内的空白地块时向目标地块移动棋子。在这一过程中要考虑不同棋子的移动力和影响范围不同&#x…

em算法python代码_EM算法的python实现的方法步骤

导读热词前言:前一篇文章大概说了EM算法的整个理解以及一些相关的公式神马的,那些数学公式啥的看完真的是忘完了,那就来用代码记忆记忆吧!接下来将会对python版本的EM算法进行一些分析。EM的python实现和解析引入问题(双硬币问题)…

第一阶段·Linux运维基础-第2章·Linux系统目录结构介绍

01 变量与PS1 02 添加用户 03 关闭SELinux 04 关闭iptables 05 显示中文乱码排查过程 06 总结 07 目录结构课程内容 08 Linux目录结构特点 09 Linux核心目录简介 10 Linux目录文件之配置文件 11 Linux核心目录文件之DNS及屌丝逃离洗浴中心之路 12 Linux核心目录文件…

使用junit-drools进行JBoss Drools单元测试

最近,我一直在大量使用JBoss Drools进行项目。 我不是Drools专家-我也不太相信这个框架,或者可能不是只相信该项目中的特定用例-我发现很难为基于Drools的业务规则编写简单,可维护的单元测试 。 这就是junit-drools诞生的方式-简单的帮助程序…

scrapy 采集网页出现丢失url的问题

url_list ["http://www.icoat.cc/news/list_18_3.html", "http://www.icoat.cc/news/list_18.html", "http://www.icoat.cc/news/list_18_2.html", ] for ls in url_list:   yield scrapy.Request(urlls, headersheader, callbackself.parseL…

java中重新加载指定文件_java-更改后重新加载属性文件

我将属性文件加载到一个类中,然后在整个应用程序中使用该类来获取它们.public class PropertiesUtil extends PropertyPlaceholderConfigurer {private static Map properties new HashMap();Overrideprotected void loadProperties(final Properties props) throws IOExcepti…

plsql 为空显示 0 的函数_不加班只加薪!从0到1教你制作出入库进销存表格

出入库表应用十分广泛,是每个公司都用到的表格,下面我们来看看怎么从一张空白表一步一步实现《出入库表》的制作,目的是做到只需要记录出库入库流水,自动对库存及累计出入库数量进行计算、实时统计。出入库表构成做一个出入库表&a…

eShopOnContainers学习系列(一):Swagger的使用

最近在看eShopOnContainer项目,抽取一下其中的基础知识点,做个记录,有兴趣的可以看下。 新建一个.net core API项目,添加Nuget包 Swashbuckle.AspNetCore.SwaggerGen、Swashbuckle.AspNetCore.SwaggerUI: 然后在启动文…

结合WebSocket编写WebGL综合场景示例

在WebGL场景中导入多个Babylon骨骼模型,在局域网用WebSocket实现多用户交互控制。 首先是场景截图: 上图在场景中导入一个Babylon骨骼模型,使用asdw、空格、鼠标控制加速度移动,在移动时播放骨骼动画。 上图在场景中加入更多的骨…

awk----基本用法

awk具体的请看这个 https://www.cnblogs.com/bwbfight/p/9402738.html awk 竟然自诩一种语言,ok.... 牛 既然这样就学习一下吧 awk -F‘[指定多个分隔符]’ 比如 awk -F[ :]表示指定:空格为分隔符 涉及多个重复分割符可以这样指定 awk -F[ :] 表示多个空…