C语言Linix服务器网络爬虫项目(一)项目初衷和网络爬虫概述

一、项目初衷和爬虫概述
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请求实现对一个网页抓取。

原文地址:https://www.cnblogs.com/xintt/p/8672038.html

时间: 2024-10-07 23:30:01

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

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

网络爬虫-使用青花瓷抓取网络数据 由于最近在研究网络爬虫相关技术,刚好看到一篇的的搬了过来! 望谅解..... 写本文的契机主要是前段时间有次用青花瓷抓包有一步忘了,在网上查了半天也没找到写的完整的教程,于是待问题解决后抽时间截了图,自己写一遍封存在博客园中以便以后随时查阅. charles又名青花瓷,在iOS开发中的抓包中具有重要作用.最大的三点用处,一就是拦截别人软件的发送的请求和后端接口,练习开发.二是自己后端返回的response拦截修改后再接收以达到测试临界数据的作用.三写脚本重复拦截

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

网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看看网络爬虫的基本原理: 一个通用的网络爬虫的框架如图所示: 网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中.

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

项目来源 这个爬虫项目是 去年实验室去一汽后的第一个项目(基本交工,现在处于更新维护阶段).内容大概是,获取到全国31个省份政府的关于汽车的招标公告,再用图形界面的方式展示爬虫内容.在完成政府招标采购网之后,提出新的关于国企的招标信息,这些爬虫都是关于这些企业的爬虫代码. 爬虫编写说明 需要的安装的东西不多,语言就用python3 数据库:mysql  可以安装正常的mysql,也可以安装wampserver的php服务器(wampserver里面有轻量级的mysql服务器,很方便) 数据库安装

20155326《网络对抗》免考项目—— 深入恶意代码之恶意代码详解

20155326<网络对抗>免考项目--深入恶意代码之恶意代码详解 什么是恶意代码 恶意代码是一种程序,它通过把代码在不被察觉的情况下镶嵌到另一段程序中,从而达到破坏被感染电脑数据.运行具有入侵性或破坏性的程序.破坏被感染电脑数据的安全性和完整性的目的. 恶意代码生命周期 攻击目标: 个人计算机 服务器 移动智能终端 手机.平板等 智能设备 特斯拉汽车.智能家居.智能手表等 通信设备 路由器.交换机等 安全设备等 防火墙.IDS, IPS. VDS 攻击目标范围: 定点攻击 邮件.IP.域名.

爬虫学习之一个简单的网络爬虫

这是一个网络爬虫学习的技术分享,主要通过一些实际的案例对爬虫的原理进行分析,达到对爬虫有个基本的认识,并且能够根据自己的需要爬到想要的数据.有了数据后可以做数据分析或者通过其他方式重新结构化展示. 什么是网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫.via 百度百科网络爬虫 网络蜘蛛(Web spider)也叫网络爬虫(Web c

个人第一个开源分布式项目distributeTemplate的实现三 网络通讯netty传输大文件

今天 我将讲讲网络通讯,这里我初始版本 由于采用的事Netty框架  所以 这里讲网络Netty在我们这里是怎么使用的,下周开始添加rpc lucene内容了 实现之后的0.2 0.3版本,后面将会去掉netty依赖 采用原生的NIO2 (aio) 异步非阻塞方式 实现自己网络通讯,也就是说 这部分可能会实现一个简单的但是比netty精简高效的网络框架,后期做出来 可能会单独开一个分支开源出来,netty说白了 就是 事件驱动 以及 NIO 加一些协议 以及 异常 处理,废话不多说了. 我最近

Windows 2008 R2 2012 R2服务器备份高级应用之---增量备份到网络

这几篇介绍Windows2008 2012服务器备份程序的几个高级应用.主要想包括网络增量备份.备份通知.空间管理等内容. 商业备份软件除了有漂亮的管理界面,还包括一些非常关键的功能,其中网络增量备份就是其中之一. 我们知道备份到网络可以使数据与本机分来增强安全性,而增量备份又是与网络备份密不可分的一个功能.因为增量备份可以只备份变化的数据,使备份的效率非常高,这就降低了对网络与操作系统本身的负荷.这对于现在越来越大的存贮有非常的意义. 很可惜的是,WINDOWSServer的备份程序可以指明备

20155326《网络对抗》免考项目——深入恶意代码之生成恶意代码的动静态结合分析

20155326<网络对抗>免考项目--深入恶意代码之生成恶意代码的动静态结合分析 在前两篇博客中,我分别学习了利用静态分析工具和动态分析功具对恶意代码进行分析,在这篇博客中,我将之前学到的知识结合起来,对恶意代码示例进行更深层次的动静态分析. 并且,我学习了使用IDA PRO和OllyDbg对恶意代码进行进一步细化的动态分析,查看恶意代码中主要函数之间的关系以及函数之间的参数,以此来搞清楚恶意代码在运行后对计算机进行了哪些操作. IDA Pro介绍 IDA Pro交互式反汇编器专业版(Int

获取两台linux服务器的cpu、内存、磁盘、网络等信息,可能不是最好的逻辑,但是对于小白的我自己动手收货不少

# coding: utf-8""" 作者:xiaofeng 功能:自动获取阿里云服务器的cpu.内存.磁盘.网络流量等信息,定时生产一个excel文件 版本:v1.1.5 日期:21/11/2019 版本迭代:各模块封装成方法,其中优化cpu计算方法"""import os,timeimport paramikoimport datetimeimport reimport xlwtdef main(): print("欢迎使用Linu