自己写一个爬虫框架的目的:
- 完美架构
- 在实际的数据采集编码过程中,发现代码比较乱,抓取数据,存储数据的代码混杂在一起,为了构建比较完美的数据采集框架
- 敏捷开发
- 将数据采集进行标准流程化,每个标准流程都封装成组件,在实际开发过程中直接调用组件即可,只需编写核心的逻辑
- 代码生成
- 可直接生成大部分的代码,开发者只需补充核心逻辑
爬虫框架与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的更多相关文章
-
android studio 框架搭建:加入注解框架Annotations
参考github上的demo,新建一个project后,会有一个位于app文件夹下的局部build.gradle文件和一个位于根目录project下的全局build.gradle文件,我们要修改的是局 ...
-
JAVA 爬虫框架webmagic 初步使用Demo
一想到做爬虫大家第一个想到的语言一定是python,毕竟python比方便,而且最近也非常的火爆,但是python有一个全局锁的概念新能有瓶颈,所以用java还是比较牛逼的, webmagic 官网 ...
-
webapi框架搭建系列博客
webapi框架搭建系列博客 webapi框架搭建-创建项目(一) webapi框架搭建-创建项目(二)-以iis为部署环境的配置 webapi框架搭建-创建项目(三)-webapi owin web ...
-
手把手教你如何新建scrapy爬虫框架的第一个项目(上)
前几天给大家分享了如何在Windows下创建网络爬虫虚拟环境及如何安装Scrapy,还有Scrapy安装过程中常见的问题总结及其对应的解决方法,感兴趣的小伙伴可以戳链接进去查看.关于Scrapy的介绍 ...
-
小白学 Python 爬虫(33):爬虫框架 Scrapy 入门基础(一)
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
-
C# 爬虫框架实现 概述
目录: C# 爬虫框架实现 概述 C# 爬虫框架实现 流程_爬虫结构/原理 C# 爬虫框架实现 流程_各个类开发 C# 爬虫框架实现 流程_遇到的问题 C# 爬虫框架实现 后记 C#爬虫框架实现 源代 ...
-
[开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计
[DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 五.如何做全站采集 为什么要造* 同学们可以去各大招聘网站查看一下爬虫工程师 ...
-
怎么在32位windows系统上搭建爬虫框架scrapy?
禁止转载: 自学python,然后搭建爬虫框架scrapy.费了我一上午的心血.终于搭建成功,以防以后忘记搭建流程,特此撰写此贴,开写 ******************************** ...
-
python网络爬虫(14)使用Scrapy搭建爬虫框架
目的意义 爬虫框架也许能简化工作量,提高效率等.scrapy是一款方便好用,拓展方便的框架. 本文将使用scrapy框架,示例爬取自己博客中的文章内容. 说明 学习和模仿来源:https://book ...
随机推荐
-
C#对称加密(AES加密)每次生成的密文结果不同思路代码分享
思路:使用随机向量,把随机向量放入密文中,每次解密时从密文中截取前16位,其实就是我们之前加密的随机向量. 代码 public static string Encrypt(string plainTe ...
-
Xcode 移除(卸载)插件
1.command + shift + G ,输入 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins 2.在Plug-ins文 ...
-
【转载】张逸--ThoughtWorks(中国)程序员读书雷达
原文地址:ThoughtWorks(中国)程序员读书雷达 软件业的特点是变化.若要提高软件开发的技能,就必须跟上技术发展的步伐.埋首醉心于项目开发与实战,固然能够锤炼自己的开发技巧,却难免受限于经验与 ...
-
【iM_VGA模块】运行 ucgui 演示!
挂在 iCore2 双核心板上的 VGA模块,跑 ucgui DEMO 演示.大家看看! ============================== 技术论坛:http://www.eeschool ...
-
Tyvj 1085 派对
这道题和HDU 1016的素数环那道题很相似. 虽然1A了,但写代码的过程中还是丢三落四的. 贴完代码闪人,嘿嘿 //#define LOCAL #include <iostream> # ...
-
解决NTFS分区上的代码在linux上编译后没有权限执行
win7下的cpp代码,在ubuntu下编译后,可执行文件不能执行,root也不行. 将代码拷贝到ubuntu上,再编译生成的可执行文件则可以执行.或者将win7分区上的可执行文件拷贝出来,然后chm ...
-
Android手机音量的控制
1.AudioManager audio=(AudioManager) super.getSystemService(Context.AUDIO_SERVICE);//获得手机的声音服务 //设置加音 ...
-
C# 调用c++报错可能性分析
1.在调用之前,可以用工具(Dependency)检测下c++库所依赖的文件,看是否有错误.如果有错误,请先下补充所需运行环境. 2.如果c++ 函数 形参需要C#传入结构体,可如下: [Struct ...
-
html的显示消息和留言板
<div class="inner_content"> <c:forEach items="${notices}" var="n&q ...
-
(转载)Java内部类的使用小结
原文摘自:http://android.blog.51cto.com/268543/384844/ 内部类是指在一个外部类的内部再定义一个类.类名不需要和文件夹相同. *内部类可以是静态stati ...