C# 爬虫框架实现 流程_各个类开发
目录链接:C# 爬虫框架实现 概述
对比通用爬虫结构,我将自己写的爬虫分为五个类实现:
Spider主类:负责设置爬虫的各项属性
Scheduler类:负责提供URL到下载类,接收URL并做去重
Downloader类:负责下载页面并提供下载到的HTML内容
PageProgress类:HTML解析类
Pipeline类:解决存储问题
下面一一介绍。主要介绍看代码中的注释,源代码在 C# 爬虫框架实现 概述 链接提供下载。
Spider主类
- 目的:方便爬虫的设置,统一入口格式化。
- 链式调用问题:即类似以下格式:
1 spider.setScheduler(urlList)
2 .setPageProgress(patterns, ".common_link/[href]")
3 .setPipeline(new DisplayInConsole())
4 .run();响应设置类可以通过返回类型为Spider解决链式调用。
Scheduler类
- 目的:解决从哪里下载的问题。方法:设置urlDowning/urlDowned集合,以及去重
- URL去重这一块是爬虫很核心的一块,但是我没有怎么写。一方面是因为有开源类库,一方面是因为我不想写分布式爬虫。我所想的,只是做一个精提取式的爬虫就行了。分布式爬虫需要投入的精力太多。
Downloader类
- 目的:下载HTML源码类。
- 注意网页编码格式
- 下载到的HTML源码会另开线程并且转到PageProgress解析HTML。此处如果不适用多线程将会损失性能。
- WebClient类很坑爹的没有发现超时控制方法。。改天找机会重写一下。。
PageProgress类
- 目的:解决提取哪些内容的问题。方法:正则表达式/CSQuer开源类
- 提取到的URL格式化问题
- 解析内容的结构化问题
PipeLine类
- 目的:决定存储到哪里。方法:派生类覆盖基类。逆变特性应该也可以,我没试
- 只实现了存储到SQLserver的Spider数据库(需手动创建)和输出到终端两种方式
C# 爬虫框架实现 流程_各个类开发的更多相关文章
- C# 爬虫框架实现 流程_爬虫结构/原理
目录链接:C# 爬虫框架实现 概述 首先需要讲的是,爬虫的原理.其实在我看来,爬虫只是用来解决以下四个问题的工具: 提取哪些网页 提取网页上的哪些内容 存储到哪里(推荐数据库/开源类/Console) ...
- scrapy爬虫框架处理流程简介
1.SPIDERS的yeild将request发送给ENGIN2.ENGINE对request不做任何处理发送给SCHEDULER3.SCHEDULER( url调度器),生成request交给ENG ...
- 3.layhm框架的流程与Boot类启动
思路 在项目根目录里新建好对应的目录 cmd里在项目根目录里,composer init初使化,一路回车 把要自动加载的文件和目录定在composer.json文件的autoload里,file是自动 ...
- C# 爬虫框架实现 概述
目录: C# 爬虫框架实现 概述 C# 爬虫框架实现 流程_爬虫结构/原理 C# 爬虫框架实现 流程_各个类开发 C# 爬虫框架实现 流程_遇到的问题 C# 爬虫框架实现 后记 C#爬虫框架实现 源代 ...
- 【网络爬虫】【python】网络爬虫(四):scrapy爬虫框架(架构、win/linux安装、文件结构)
scrapy框架的学习,目前个人觉得比较详尽的资料主要有两个: 1.官方教程文档.scrapy的github wiki: 2.一个很好的scrapy中文文档:http://scrapy-chs.rea ...
- Python爬虫框架Scrapy获得定向打击批量招聘信息
爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这样的说法不够专业,更专业的描写叙述就是.抓取特定站点网页的HTML数据.只是因为一个站点的网页非常多,而我们又不可能事先知道全部网页的URL地址, ...
- 爬虫框架 ---- scrapy 框架的介绍与安装
----- 爬虫 基于B/S 模式的数据采集技术,按照一定的规则,自动的抓取万维网信息程序 以一个或多个页面为爬取起点,从页面中提取链接实现深度爬取 使用爬虫的列子 第三方抢票软件(360/猎豹/ ...
- Scrapy爬虫框架中的两个流程
下面对比了Scrapy爬虫框架中的两个流程—— ① Scrapy框架的基本运作流程:② Spider或其子类的几个方法的执行流程. 这两个流程是互相联系的,可对比学习. 1 ● Scrapy框架的基本 ...
- 爬虫写法进阶:普通函数--->函数类--->Scrapy框架
本文转载自以下网站: 从 Class 类到 Scrapy https://www.makcyun.top/web_scraping_withpython12.html 普通函数爬虫: https:// ...
随机推荐
- 🔥 LeetCode 热题 HOT 100(51-60)
142. 环形链表 II 思路:快慢指针,快慢指针相遇后,慢指针回到头,快慢指针步伐一致一起移动,相遇点即为入环点 /** * Definition for singly-linked list. * ...
- 简明易懂,将细节隐藏,面向新手树立web开发概念——学完Java基础语法,超快速上手springboot+mybatiJavaWeb开发
简明易懂,将细节隐藏,面向新手树立web开发概念 --学完Java基础语法,超快速上手JavaWeb开发 Web本质(先忽视各种协议) Web应用可以理解为浏览器和服务器之间的交互. 我们可以看一个简 ...
- 数据结构和算法学习笔记十五:多路查找树(B树)
一.概念 1.多路查找树(multi-way search tree):所谓多路,即是指每个节点中存储的数据可以是多个,每个节点的子节点数也可以多于两个.使用多路查找树的意义在于有效降低树的深度,从而 ...
- Netty 源码分析系列(一)Netty 概述
前言 关于Netty的学习,最近看了不少有关视频和书籍,也收获不少,希望把我知道的分享给你们,一起加油,一起成长.前面我们对 Java IO.BIO.NIO. AIO进行了分析,相关文章链接如下: 深 ...
- noip模拟测试20
考试总结:这次考试,我非常真实地感觉到了自己能力的提高,具体来说,在之前的考试中,读完题之后我只会想到暴力的思路,甚至有的题连暴力都打不出来,但是这次在考场上我已经有了自己的一些想法,有了一个深入思考 ...
- Python - 函数实战
前言 参考的是慕课网提供的实战,自己编码 http://www.imooc.com/wiki/pythonlesson1/function2.html 什么是模块化程序设计 在进行程序设计时将一个大程 ...
- 90%的开发者都不知道的UI本质原理和优化方式
前言 很多开发者在工作中一直和UI打交道,所以认为UI非常的简单! 事实上对于90%的开发者来说,不知道UI的本质原理. 虽然在开发中,我们在接到产品的UI需求之后,可以走捷径照抄大型APP代码,但是 ...
- Check Directory Existence in Shell
The following command in one line can check if a directory exists. You can check the return value (& ...
- linux联网、远程
使用VMware虚拟机创建linux系统CentOS 7,连接网络以及远程Moba工具. 一.首先安装好VMware虚拟机和CentOS系统,网上很多教程,不在赘述. 二.打开VMware进行配置 1 ...
- 基于 CODING CD + Nocalhost 在大型应用的 ChatOps 实践
本文作者:红亚科技 CTO--卢兴民 红亚科技聚焦信息技术发展,为信息技术相关专业提供优质教学服务 背景 ChatOps 最早起源于 GitHub,它以沟通平台为中心,通过与机器人产生对话和交互,使开 ...