一、项目初衷和爬虫概述
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. centos下 kerberos安装手册

    (一)yum方式安装 安装krb的server 步骤一:yum install krb5-server 安装krb 的客户端yum install krb5-workstation krb5-libs ...

  2. java 关键字final static native详解

    java 关键字native static final详解 一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义, ...

  3. 原来你是这样的Websocket--抓包分析

    之前自己一个人负责完成了公司的消息推送服务,和移动端配合完成了扫码登录.订单消息推送.活动消息广播等功能.为了加深自己对Websocket协议的理解,自己通过进行抓包的方式学习了一番.现在分享出来,希 ...

  4. Postman使用小技巧

    Postman使用小技巧 2017-09-13 目录: 1 自动生成流水号2 保存响应结果 1 自动生成流水号 返回 为了让接口具有幂等性,在设计时,往往有一个字段是唯一的(比如流水号,交易编号等), ...

  5. Python 常用命令

    对Python进行软件的安装.卸载和查看,是我们在日常工作中经常要做的事情,有的时候会突然忘记常用的命令,所以在此记录下来: pip 安装软件包 pip install xxx 卸载软件包 pip u ...

  6. ~psd面试 求最长回文序列 DP求解

    链接:https://www.nowcoder.com/acm/contest/90/D来源:牛客网 掌握未来命运的女神 psd 师兄在拿了朝田诗乃的 buff 后决定去实习. 埃森哲公司注册成立于爱 ...

  7. MySQL 中添加列、修改列以及删除列

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:); 删除列:alte ...

  8. Spring Boot 1.4测试的改进

    对Pivotal团队来说,工作上的好事情是他们拥有一个被叫做Pivotal Labs的灵活发展部门,拥有Labs团队的Lean 和 XP程序设计方法学的强大支持,例如结对编程和测试驱动开发.他们对于测 ...

  9. Java过滤器Filter使用详解

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6374212.html 在我的项目中有具体应用:https://github.com/ygj0930/Coupl ...

  10. [iOS]详解调整UIButton的title和image的位置

    UIButton的默认布局是:title在右,image在左; 很多时候我们需要的是title在左边,或者title在下面,这时就需要调整UIButton的TitleLabel和ImageView的位 ...