自己写一个爬虫框架的目的:
  • 完美架构

    • 在实际的数据采集编码过程中,发现代码比较乱,抓取数据,存储数据的代码混杂在一起,为了构建比较完美的数据采集框架
  • 敏捷开发
    • 将数据采集进行标准流程化,每个标准流程都封装成组件,在实际开发过程中直接调用组件即可,只需编写核心的逻辑
  • 代码生成
    • 可直接生成大部分的代码,开发者只需补充核心逻辑
爬虫框架与Web框架的对比:
 
  爬虫框架 Web框架
脚本类型  不区分客户端和服务端; 控制台程序,是独立的进程  区分服务端和客户端,且是服务端程序; 运行的容器是Web服务器
入口脚本  是爬虫脚本在运行的入口;例如:main.js 使用唯一的入口脚本,是服务区接收Web请求的入口;例如index.php
处理  已进程为核心 采用路由分发,控制器为中心的模式
数据存储  主要为数据插入存储  包括数据的增删改查
页面  从页面中采集数据  编写页面并使用数据渲染页面
中间件  过滤爬虫存储数据的职责链,通常指数据的除重去噪  过滤HTTP请求的职责链
爬虫框架MyCrawler的特性:
  • 使用面向对象方法封装数据采集类
  • 使用面向对象方法封装数据存储类
  • 代码生成器
  • 自动数据去重
UML中类关系详解
  • 虚线箭头指向依赖
  • 实线箭头指向关联
  • 虚线三角指向接口
  • 实线三角指向父类
  • 空心菱形能分离而独立存在,是聚合
  • 实心菱形精密关联不可分,是组合

MyCrawler爬虫框架类图

新建一个空项目,命名为MyCrawler

初始化package.json文件

npm init --yes

例如:

F:\project\MyCrawler>npm init --yes
Wrote to F:\project\MyCrawler\package.json:

{
  "name": "MyCrawler",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

下载安装Crawler框架

npm install crawler

例如:

F:\project\MyCrawler>npm install crawler
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN MyCrawler@ No description
npm WARN MyCrawler@ No repository field.

+ crawler@
added  packages from  contributors and audited  packages .699s
found  vulnerabilities ( low,  moderate)
  run `npm audit fix` to fix them, or `npm audit` for details

注意:如果安装失败,则切换使用另一个网络重试,因为有可能是网络不好,或者网络无法达到目的主机

使用Crawler框架搭建自己的爬虫框架MyCrawler的更多相关文章

  1. android studio 框架搭建:加入注解框架Annotations

    参考github上的demo,新建一个project后,会有一个位于app文件夹下的局部build.gradle文件和一个位于根目录project下的全局build.gradle文件,我们要修改的是局 ...

  2. JAVA 爬虫框架webmagic 初步使用Demo

    一想到做爬虫大家第一个想到的语言一定是python,毕竟python比方便,而且最近也非常的火爆,但是python有一个全局锁的概念新能有瓶颈,所以用java还是比较牛逼的, webmagic 官网 ...

  3. webapi框架搭建系列博客

    webapi框架搭建系列博客 webapi框架搭建-创建项目(一) webapi框架搭建-创建项目(二)-以iis为部署环境的配置 webapi框架搭建-创建项目(三)-webapi owin web ...

  4. 手把手教你如何新建scrapy爬虫框架的第一个项目(上)

    前几天给大家分享了如何在Windows下创建网络爬虫虚拟环境及如何安装Scrapy,还有Scrapy安装过程中常见的问题总结及其对应的解决方法,感兴趣的小伙伴可以戳链接进去查看.关于Scrapy的介绍 ...

  5. 小白学 Python 爬虫(33):爬虫框架 Scrapy 入门基础(一)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  6. C# 爬虫框架实现 概述

    目录: C# 爬虫框架实现 概述 C# 爬虫框架实现 流程_爬虫结构/原理 C# 爬虫框架实现 流程_各个类开发 C# 爬虫框架实现 流程_遇到的问题 C# 爬虫框架实现 后记 C#爬虫框架实现 源代 ...

  7. [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计

    [DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 五.如何做全站采集 为什么要造轮子 同学们可以去各大招聘网站查看一下爬虫工程师 ...

  8. 怎么在32位windows系统上搭建爬虫框架scrapy?

    禁止转载: 自学python,然后搭建爬虫框架scrapy.费了我一上午的心血.终于搭建成功,以防以后忘记搭建流程,特此撰写此贴,开写 ******************************** ...

  9. python网络爬虫(14)使用Scrapy搭建爬虫框架

    目的意义 爬虫框架也许能简化工作量,提高效率等.scrapy是一款方便好用,拓展方便的框架. 本文将使用scrapy框架,示例爬取自己博客中的文章内容. 说明 学习和模仿来源:https://book ...

随机推荐

  1. Linux 软硬链接的区别及目录权限对软硬链接的影响

    目录权限的影响 首先,构建实验环境如下图: 有 A.B 两个目录,A 目录下建有 test 文件,且文件中的内容为 "Hello".B 目录下分别创建 test 文件的硬链接 te ...

  2. Java 工厂模式(一)— 抽象工厂(Abstract Factory)模式

    一.抽象工厂模式介绍: 1.什么是抽象工厂模式: 抽象工厂模式是所有形态的工厂模式中最为抽象和最具有一般性的一种形态,抽象工厂模式向客户端提供一个接口,使得客户端在不知道具体产品的情类型的情况下,创建 ...

  3. 观察者模式 Observer 发布订阅模式 源 监听 行为型 设计模式(二十三)

    观察者模式 Observer 意图 定义对象一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖他的对象都得到通知并自动更新. 别名:依赖(Dependents),发布订阅(Publish-Su ...

  4. 常见的网页图像格式有 ico、jpg、png、gif,说说他们各自的应用场景

    1.ico:一般作为网页的标题上面的图标出现,文件 favicon.ico一般存放在网站根目录 2.jpg:非常适合作为储存像素色彩丰富的图片.例如照片等等 3.png:分为 png-8 以及 png ...

  5. SAP 没有激活HUM功能照常可以使用Handling Unit

    SAP 没有激活HUM功能照常可以使用Handling Unit 笔者所在的项目上的公司间STO的流程里,发货公司在做PGI之后系统自动触发收货公司的inbound delivery单据,发货公司发出 ...

  6. Android 离线人脸识别 ArcFace 2.0 Demo开发分享

    环境要求     1.运行环境 armeabi-v7a     2.系统要求 Android 5.0 (API Level 21)及以上     3.开发环境 Android Studio   下载地 ...

  7. node.js微信小程序配置消息推送

    在开发微信小程序时,有一个消息推送,它的解释是这样的. 消息推送具体的内容是下面的这个网址   https://developers.weixin.qq.com/miniprogram/dev/fra ...

  8. 局域网git服务器搭建(基于win7 + bonobo git server)

    公司内网有一台win7系统的服务器. 准备在上面部署git后台, 用于内网项目版本管理. 搜索了相关资料后, 在根据公司环境, 决定采用win7 + bonobo git server + git的方 ...

  9. 城市经纬度 json

    [ { "name": "北京市", "log": "116.46", "lat": "3 ...

  10. .net core 命令行(仅作记录)

    命令大全:dotnet 命令 创建NuGet包:如何使用 .NET Core 命令行接口 (CLI) 工具创建 NuGet 包