我们在学习了Linux系统编程之后,需要一些实战项目来提高自己的水平,本系列我们通过编写一个爬虫程序,将我们学习的知识进行综合应用,同时在实现项目的过程中逐渐养成一些有用的思维方式,并具有初步的软件开发思想. 网络爬虫是搜索引擎的一个重要基本功能.由于互联网上的信息非常庞大,我们借助搜索引擎很容易得到自己需要的信息.搜索引擎首先需要一个信息采集系统,即网络爬虫,将互联网上的网页或其它信息收集到本地,然后对这些信息创建索引.当用户输入查询请求的时,先对用户的查询请求进行分析,然后在索引库中进行匹配…
Robots协议(也称为爬虫协议.机器人协议等)的全称是"网络爬虫排除标准"(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取. robots.txt文件是一个文本文件.robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的. 当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人…
高效的网络爬虫是搜索引擎的重要基础.采用多任务并发执行,实现类似于CPU的流水线(pipeline)运行方式,可极大地提高网络和计算资源的利用率等性能. #include "threads.h" #include "spider.h" #include "confparser.h" /* the number of current running thread */ int g_cur_thread_num = 0; /* lock for ch…
网络爬虫是捜索引擎抓取系统的重要组成部分.爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份. 一个通用的网络爬虫的框架如图所示:…
在爬虫系统中数据的流量相当大,要处理的数据内容不仅包括爬虫系统的各种数据结构空间,而且包括从外部节点中得到的各种数据,比如HTTP请求,HTML页面,ROBOT.TXT等等.如果对这些内容处理不当,那么不仅造成空间的冗余浪费,使爬虫程序效率降低,而且还可能会使系统崩溃.所以,要有合适的空间分配策略.空间分配与管理方案.在内存中使用缓冲空间,以快速的得到.存储数据.统一各种请求的结构,应该合理利用并在每次用完后进行回收.比如,ROBOT.TXT文件,HTTP请求头及相应的应答.这种方式,在站点数目…
DNS 是Domain Name Service的缩写.域名系统为Internet上的主机分配域名地址和IP地址.IP地址不易于记忆,然而域名地址相比较而言是方便于记忆的.用户如果使用域名地址,当想获得IP地址时,就要向域名服务器发送请求.这个域名服务器就会自动把域名地址转为IP地址返回给用户.爬虫程序优化DNS请求的必要性当爬虫程序从HTML页面上提取URL时,一般情况下,应该有很多都是这个站点内部的URL.那么当这个站点里的某个URL请求过DNS以后,就应该采用某种数据结构把这个值保存起来.…
http请求头,HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST).如有必要,客户程序还可以选择发送其他的请求头.HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST).如有必要,客户程序还可以选择发送其他的请求头.大多数请求头并不是必需的,但Content-Length除外.对于POST请求来说Content-Length必须出现. 下面是一些最常见的请HTTP请求头概述 Accept:浏览器可接受的M…
为了验证爬虫的业务流程.性能和健壮性需要进行测试. 软件测试是描述一种用来促进鉴定软件的正确性.完整性.安全性和质量的过程.软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程. 软件测试的目的:(1)测试是为了发现程序中的错误而执行程序的过程.(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案.(3)成功的测试是发现了至今为止尚未发现的错误的测试.(4)测试并不仅仅是为了找出错误.通过分析错误产生的原因和错误的发生…
HTTP是一种很简单的请求.响应式协议,客户端发送一个请求.服务器返回一个响应.HTTP 1.1 版本规范由 RFC2616 定义.了解了 HTTP请求.响应消息在TCP数据流中的格式,很容易使用纯 socket 模拟HTTP客户端.HTTP服务器发送接收数据. RFC文档全是ASCII码,txt格式,但有其标准格式,用户可通过官方网站查阅(http://www.rfc-editor.org/),也可下载txt版本并使用阅读器(RFCReader.UE或写字板都可以,记事本打开时格式不规范,有网…
Socket是进程之间交换数据的机制.这些进程即可以是同一台机器上的,也可以是通过网络连接起来的不同机器.一旦一个Socket连接建立,那么数据就能够双向传输,直到其中一端关闭连接. 通常,请求数据的应用程序叫做客户端Client,而为请求服务叫做服务器Server.基本上说,首先,服务器监听一个端口,并且等待来自客户端的连接.之后客户端创建一个,并且尝试连接服务器.接着,服务器接受了来自客户端的连接,并且开始交换数据.一旦所有的数据都已经通过socket连接传输完毕,那么任意一方都可以关闭连接…