一、项目初衷和爬虫概述
1.项目初衷
  本人的大学毕设就是linux上用c写的一个爬虫,现在我想把它完善起来,让他像一个企业级别的项目。为了重复发明轮子来学习轮子的原理,我们不使用第三方框架(这里是说的是指通常的linux系统编程教材以外的库和接口-0-,当初我也是在虚拟机上跑的ubuntu+putty+vim来开发)来实现。
  然而我们造轮子不能闭门造车,苦心孤诣,而是要站在巨人的肩膀上,这样我们才能够更好更快地把握轮子的原理,进而造出更快更结实的轮子。下面是两位前辈的博客,本项目是在这两个博客来提供的思路和部分代码上实现的,下面是这两个博客的网址,阅读这两个博客将对我们接下来的学习有很大的帮助。
  缱绻的西格玛:(http://blog.csdn.net/l979951191/article/details/48650657)//大神在大二大三的时候有已经做到这种项目了,还有傅里叶变换的信号相关的文章,先膜拜一下。
  尹成:(http://blog.csdn.net/itcastcpp/article/details/38883047)//清华大神就不多说了。

  在做项目之前先要了解项目相关的内容:
(1)该爬虫就功能来说比较单一,但是作为一个个人的学习项目来说又是相对完整的。
(2)该爬虫可优化的地方太多,很多的方案不一定是最好的,所以该爬虫仅仅适合于新手的学习
(3)这个算是一个完整的项目,基于linux的,是纯C的。
(4)因为我也以此项目来学习的,我觉得作为学习项目还是具有一定的学习价值:
  通过此项目,我们将学会几种思想:软件框架思想,代码复用思想, 迭代开发思想,增量开发思想
  通过此项目,我们将会掌握并巩固以下技术要点:
1、Linux进程及调度 2、Linux服务 3、信号 4、Socket编程 5、Linux多任务 6、文件系统 7、正则表达式 8、shell脚本 9、动态库
  另外我们还会学到一些额外的的知识:
1、 如何使用HTTP协议
2、 如何设计一个系统
3、 如何选择和使用开源项目
4、 如何选择I/O模型
5、 如何进行系统分析
6、 如何进行容错处理
7、 如何进行系统测试
8、 如何对源代码进行管理
  星辰大海已横于前,云帆挂起,让我们开始一起开始学习的征程吧!
2.爬虫概述
  网络爬虫是搜索引擎的一个重要基本功能。由于互联网上的信息非常庞大,我们借助搜索引擎很容易得到自己需要的信息。搜索引擎首先需要一个信息采集系统,即网络爬虫,将互联网上的网页或其它信息收集到本地,然后对这些信息创建索引。当用户输入查询请求的时,先对用户的查询请求进行分析,然后在索引库中进行匹配,最后对结果进行处理,返回结果。
  网络爬虫不仅是搜索引擎的重要组成部分,在信息采集、舆情分析、情报收集等一些需要进行数据采集的业务系统中也应用广泛。对数据的采集是对大数据进行分析的重要前提条件。
  网络爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。
网络爬虫从一个初始的URL集合出发,将这些URL全部放入到一个有序的待提取URL队列里;然后从这个队列里按顺序取出URL,通过Web上的协议,获取URL所指向的页面,从这些已获取的页面中分析提取出新的URL,并将它们继续放入到待提取URL队列里,一直重复上述过程,获取更多的页面。

  下一篇我们对爬虫项目进行简单的设计并通过一个简单的http请求实现对一个网页抓取。

C语言Linix服务器网络爬虫项目(一)项目初衷和网络爬虫概述的更多相关文章

  1. C语言Linix服务器网络爬虫项目(二)项目设计和通过一个http请求抓取网页的简单实现

    我们通过上一篇了解了爬虫具体要实现的工作之后,我们分析得出的网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出 ...

  2. 关于网络爬虫项目的项目建议(NABCD)

    Need 我们小组的研究课题是编写一个更快捷,更安全的爬虫软件,编写时会应用到学长的部分代码并在其基础上完善创新. 初步阅读了学长们的博客上面的几个版本的测试情况和源代码,发现学长们在实现基础功能的条 ...

  3. iOS开发——网络实用技术OC篇&网络爬虫-使用青花瓷抓取网络数据

    网络爬虫-使用青花瓷抓取网络数据 由于最近在研究网络爬虫相关技术,刚好看到一篇的的搬了过来! 望谅解..... 写本文的契机主要是前段时间有次用青花瓷抓包有一步忘了,在网上查了半天也没找到写的完整的教 ...

  4. iOS开发——网络使用技术OC篇&网络爬虫-使用正则表达式抓取网络数据

    网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...

  5. Python爬虫与一汽项目【综述】

    项目来源 这个爬虫项目是 去年实验室去一汽后的第一个项目(基本交工,现在处于更新维护阶段).内容大概是,获取到全国31个省份政府的关于汽车的招标公告,再用图形界面的方式展示爬虫内容.在完成政府招标采购 ...

  6. 20145208 蔡野 《网络对抗》免考项目 MSF学习

    20145208 蔡野 <网络对抗>免考项目 MSF Exploit模块开发 题目:MSF Exploit模块开发 摘要 本免考项目的目标是通过对msf模块的设计语言--ruby和expl ...

  7. iOS - 开源框架、项目和学习资料汇总(网络篇)

    网络连接 1. AFNetworking – ASI不升级以后,最多人用的网络连接开源库,[推荐]iOS网络编程之AFNetworking使用,iOS开发下载文件速度计算.2. Alamofire – ...

  8. C 语言快速入门,21 个小项目足矣!「不走弯路就是捷径」

    C 语言作为大学理工科专业的必修,是很多同学走进编程世界的第一课.那么怎样才能更好的入门 C 语言呢? 下面整理了 21 个 C 语言练手项目,从基础语法开始,逐步深入,通过一个个练手项目,让你轻松驰 ...

  9. 爬虫学习之基于Scrapy的网络爬虫

    ###概述 在上一篇文章<爬虫学习之一个简单的网络爬虫>中我们对爬虫的概念有了一个初步的认识,并且通过Python的一些第三方库很方便的提取了我们想要的内容,但是通常面对工作当作复杂的需求 ...

随机推荐

  1. jsoup.parse 的一个坑

    那天,写好一个爬虫 爬取某个网站的数据. 当时调用了公司不知道某个人写的 一个方法 logger.info(joururl); doc= util.getDocument(joururl.toStri ...

  2. 在 WinForm 中 如何实现 加载等待功能

    1,需要一个动态的londing文件:在项目中我们新建一个文件夹来存放它: 2,在需要出现londing状态的窗体上加上一个Panel: 黄色区域是Panel,灰色的是需要被加载的区域.当需要触发lo ...

  3. ZOJ3946:Highway Project(最短路变形)

    本文转载自:http://www.javaxxz.com/thread-359442-1-1.html Edward, the emperor of the Marjar Empire, wants ...

  4. Mycat 分片规则详解--固定 hash 分片

    实现方式:该算法类似于十进制的求模运算,但是为二进制的操作,例如,取 id 的二进制低 10 位 与 1111111111 进行 & 运算 优点:这种策略比较灵活,可以均匀分配也可以非均匀分配 ...

  5. 笔记:Struts2 文件上传和下载

    为了上传文件必须将表单的method设置为POST,将 enctype 设置为 muiltipart/form-data,只有设置为这种情况下,浏览器才会把用户选择文件的二进制数据发送给服务器. 上传 ...

  6. 如何进入MySQL

    C:\Users\电脑ID>D:D:\> cd D:\wamp\wamp64\bin\mysql\mysql5.7.19\binD:\wamp\wamp64\bin\mysql\mysql ...

  7. new Date的兼容性问题

    标准浏览器下正常,结果ie.老版本的IOS微信公众号不支持,搞不懂,原来有兼容性问题 //beginData格式为'yyyy-mm-dd' 1 var _date = new Date(Date.pa ...

  8. sentinel监控redis高可用集群(一)

    一.首先配置redis的主从同步集群. 1.主库的配置文件不用修改,从库的配置文件只需增加一行,说明主库的IP端口.如果需要验证的,也要加多一行,认证密码. slaveof 192.168.20.26 ...

  9. JVM学习七:JVM之类加载器之类的卸载

    类加载的过程和原理,以及双亲委派机制都已经讲解完成,那么我们今天讲解类加载的最后一节,那么就是类的卸载. 我们知道,当一个类被加载.连接和初始化之后,他的生命周期就开始了,当该类的class对象不再被 ...

  10. Ubuntu16.0.4的磁盘管理

    ubuntu下硬盘无损分区移动修改工具 原创 2014年04月13日 :: ubuntu上面其实有很好的分区调整工具,gparted,非常好使用 安装非常简单 sudo apt-get install ...