TSE-定义Page类_deepfuture的博客-程序员秘密

技术标签: string  header  socket  搜索引擎  class  搜索引擎与人工智能  url  

有了URL,搜集系统就可以按照URL标识抓取其所对应的网页,网页信息保存在Page类中。
下面是Page类的定义,对应文件Page.h。
class CPage
{
public:
string m_sUrl;
// 网页头信息
string m_sHeader;
int m_nLenHeader;
int m_nStatusCode;
int m_nContentLength;
string m_sLocation;
bool m_bConnectionState; // 如果连接关闭,是false,否则为true
string m_sContentEncoding;
string m_sContentType;
string m_sCharset; " 36 "
string m_sTransferEncoding;
// 网页体信息
string m_sContent;
int m_nLenContent;
string m_sContentNoTags;
// link, in a lash-up state
string m_sContentLinkInfo;
// 为搜索引擎准备的链接,in a lash-up state
string m_sLinkInfo4SE;
int m_nLenLinkInfo4SE;
// 为历史存档准备的链接, in a lash-up state
string m_sLinkInfo4History;
int m_nLenLinkInfo4History;
//为搜索准备的链接,in a good state
RefLink4SE m_RefLink4SE[MAX_URL_REFERENCES];
int m_nRefLink4SENum;
//为历史存档准备的链接, in a good state
RefLink4History m_RefLink4History[MAX_URL_REFERENCES/2];
int m_nRefLink4HistoryNum;
map<string,string>m_mapLink4SE;
vector<string >m_vecLink4History;
enum page_type m_eType; // 网页类型
public:
CPage();
CPage::CPage(string strUrl, string strLocation, char* header, char*body, int nLenBody);
~CPage(); " 37 "
void ParseHeaderInfo(string header); // 解析网页头信息
bool ParseHyperLinks(); // 从网页体中解析链接信息
bool NormalizeUrl(string& strUrl);
bool IsFilterLink(string plink);
private:
// 解析网页头信息
void GetStatusCode(string header);
void GetContentLength(string header);
void GetConnectionState(string header);
void GetLocation(string header);
void GetCharset(string header);
void GetContentEncoding(string header);
void GetContentType(string header);
void GetTransferEncoding(string header);
// 从网页体中解析链接信息
bool GetContentLinkInfo();
bool GetLinkInfo4SE();
bool GetLinkInfo4History();
bool FindRefLink4SE();
bool FindRefLink4History();
};
Page类的具体实现请参看Page.cpp文件。一个网页是以URL作为标识的,所以Page类的第一个成员变量是m_sUrl。Page类主要完成两个任务:解析网页头信息和提取链接信息。
解析网页头信息包括获得状态码m_nStatusCode,网页体长度m_nContentLength(内容字节数),转向信息m_sLocation,连接状态(如果没有关闭,下次请求同一个网站可以重新利用已经建立好的socket,节约资源),网页体编码m_sContentEncoding(如果是gzip编码,要解压缩,然后提取链接信息。现在门户网站的首页有增大趋势,为了加快传输速度,通常采用gzip编码压缩后传输),网页类型m_sContentType,网页体字符集m_sCharset,和传输编码方式m_sTransferEncoding。
提取链接信息,是从获得的网页体中,根据HTML的规定,提取出链接信息
和相应的链接描述信息,形成网页结构库,扩充URL库。在TSE中对于网页内容的链接提取区分了为搜索引擎提取和为历史网页存档提取两种。因为对于通常意义下的搜索引擎而言,图片链接,网页格式链接是没有用处的,如果不区分开,会增加程序运行的负担,增加存储空间。而且区分开后,可以单独保存下来,便于以后单独搜集这些信息。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/deepfuture/article/details/5085842

智能推荐

找出数组中只出现一次的数字_AddoilDan的博客-程序员秘密

问题描述:    一个整型数组里除了一个数字以外,其他数字都出现了两次。找出这个只出现一次的数字算法思路:     *    异或运算:任何一个数字异或它本身都等于0,     *    如果从头到尾异或数组中的每一个数字,那些出现两次的数字全部在异或中会被抵消,     *    最终的结果刚好是这个只出现一次的数字package JBArray;/** * 找出数组...

五、Python的字符串_python中花括号冒号前面的0是啥_zhaopeng01zp的博客-程序员秘密

字符串1、什么是字符串大家注意,Python语言和很多其他的编程语言有一点是不同的,有的编程语言有一个单独的字符类型,而在Python中是没有单独的字符类型的,所谓字符就是只包含一个元素的字符串。2、字符串的创建方法一:使用引号创建字符串在Pycharm这种集成开发环境中,当我们打印一个字符串的时候,会把我们要打印的这个字符串两边的单引号或者双引号都去掉了,这样我们通过这种工具的打印结果,看不出来abcd是一个字符串,因此我们接下来使用交互式命令行来验证字符串的一些特性和技术要点。

当eclipse无法进入解决方法_eclipse 无法找到入口_小扎仙森的博客-程序员秘密

进入:C:\ProgramData\Oracle\Java\javapath;删除:java.exe、javaw.exe、javaws.exe删除:path的C:\ProgramData\Oracle\Java\javapath;然后可能还会不行进入:C:\Windows\System32删除:java.exe、javaw.exe、javaws.exe...

Python+Slack API 如何实现聊天机器人_行善积德韩老魔的博客-程序员秘密

聊天机器人(Bot) 是一种像 Slack 一样的实用的互动聊天服务方式。如果你之前从来没有建立过聊天机器人,那么这篇文章提供了一个简单的入门指南,告诉你如何用 Python 结合 Slack API 建立你第一个聊天机器人。我们通过搭建你的开发环境, 获得一个 Slack API 的聊天机器人令牌,并用 Pyhon 开发一个简单聊天机器人。我们所需的工具我们的聊天机器人我们将它称...

element-ui导出excel表格,代码基于vue-element-admin-master_远在北方的鬼的博客-程序员秘密

1、安装插件npm install js-xlsx file-saver -Snpm install script-loader -S -D //它帮我们挂载了,不需要引入到main.js里面2、在src下创建一个文件夹vendor,并且引入Export2Excel.js此处附上我项目中vendor的链接,直接拷过去就好:vendor文件拷贝链接3、html中表格&lt;el-ta...

SubClassWindow详解_playStudy的博客-程序员秘密

2010-11-22 23:002062人阅读评论(8)收藏举报许多Windows程序员都是跳过SDK直接进行RAD开发工具[或VC,我想VC应不属于RAD]的学习,有些人可能对子类化机制比较陌生。 我们先看看什么是Windows的子类化。Windows给我们或是说给它自己定义了许多丰富的通用控件,如:Edit、ComboBox 、ListBox……等,这些控件功能丰富,能为我们开发工

随便推点

jquery通过相同的class获取元素并遍历取值_classname 遍历 高度_milli236的博客-程序员秘密

$(".cartProList span.proPrice").each(function(){ // let this = $(this); console.log($(this).html()); });// 1.选择样式    $("p.chooseIcon").on("click","i",function() {        // body...     

google jQuery引用文件直接引用地址http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js_javazhuanzai的博客-程序员秘密

======================================================注:本文源代码点此下载======================================================1. 很多网站都是使用这种方式引入,客户的浏览器可能已经缓存过了 jquery。可以直接调用本地的,速度更快…2. google code 使

bpmn事件_分享牛的博客-程序员秘密

本文章主要讲解bpmn事件,系列文章包含工作流、工作流系统、工作流引擎的相关讲解,涉及的到Camunda BPM、BPMN规范、activit的基础性知识,对于流程自动化、业务流程等进行了深入研究探讨。

GitHub上50K Star热榜:Python从入门到精通100天学习计划,这次再学不会算我输_普通网友的博客-程序员秘密

前言作为目前最火也是最实用的编程语言,Python 不仅是新手入门程序界的首选,也逐渐成为了从大厂到小厂,招牌需求 list 的必要一条,但学 Python 这件事情你可能和大多数人一样下了一百次决心,可最后都 “从入门到放弃”。究其原因,很可能是没有明确的学习目标,或者学习目标太过“宏伟”,所以总是阵亡在了 introduction 视频的第一行代码。那么,从小白成为大师,到底需要多长时间?真的有一个有规可循的计划吗?这两天有个项目一直霸榜 GitHub 热榜,作者用实际行动告诉你:Python 学

IAR FOR AVR 定时器中断的使用_xiaolei05的博客-程序员秘密

首先看下在iar 里面 iom16.h里面的中断向量表/* NB! vectors are specified as byte addresses */#define    RESET_vect           (0x00)#define    INT0_vect

推荐文章

热门文章

相关标签