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

Stella981
• 阅读 262

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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Aimerl0 Aimerl0
2年前
Python网络爬虫与信息提取
title:Python网络爬虫与信息提取date:2020121001:00:23tags:Pythoncategories:学习笔记写在前面不知道写啥其实说实话TOC网络爬虫之规则安装requests库cmd命令行打开输入pip3installrequests,等待即可简单测试,爬一下bkjwpythonimportrequ
Wesley13 Wesley13
2年前
java中比较两个时间的差值
项目背景1.某篇文稿的发布时间是publishDate,例如:2020072118:00:41。2.现要求判断该篇文稿的发布时间是否在近30天之内。publicstaticlongdayDiff(DatecurrentDate,DatepublishDate){LongcurrentTimecurrentDat
Wesley13 Wesley13
2年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这