搜索引擎是怎样的存在?(二 信息搜集模块)

不要以为搜集数据就是写一组程序,然后让它跑起来这么简单,这里面有很多门道。

相关知识

了解一些不与搜索引擎直接相关的东西很有必要:

I.通信协议(包括http、ftp、smtp等等),在搜索之前,我们需要与服务器建立连接(东西都在服务器上嘛),并保证我们发送的请求是服务器能够识别的,具体什么协议我们可以暂时不管,但我们必须有这个意识

II.在写爬取程序之前,我们需要确定和优化处理数据的数据结构,因为这也关系着你的爬虫程序应该采用哪种编程语言和哪种编程思想

信息搜集的过程

接下来,我们从爬虫服务器连接通信3各方面来看看搜集是怎样一个过程:

爬虫(Spider Crawl Robot),搜索引擎都是有多个爬虫的,即多个程序,不过我们不关心这个,我们关心的是,他大概怎么运作的,要包含哪些东西。

爬虫实质上就是在数据集合中找到各种数据类型的URL集合,包括(html、PDF、word、PPT...),然后进行解析。通常情况下,一个爬虫需要包含这样几个部分——

I.URL类,去匹配URL集合。这里必不可免要用到(包含)正则表达式(解析数据字符串),当然,编程语言是多种多样的,PHP、Python、Java都行,自行选择

II.URL容器,存储已经解析过的网页和待解析的网页

III.URL解析器,从各大网页中国提炼出价值信息

那这么多的网页,应该怎样去爬呢?这涉及到网页的权重问题(重要性问题) ,其实,web信息不仅在数量上,在结构上也像一个海洋(如下图),在爬虫出发之前,它并不知道哪个网页更重要,所以我们选择目录较浅的表面层次信息,用户更容易浏览到,比如各大网站的首页,这样是比较合理的。这反映到数据结构上,即广度优先,所以说铺垫很重要。
a0032f7a28c39844c08942825b2a1cfa_b.png

当然,在面对巨大的信息量时,任何程序设计都是一项复杂的工程,我并没有讲robot协议,爬虫与网站间应该如何建立友好合作关系,因为一两句说不清楚。

建立服务器连接。原因很好懂,当你的爬虫匹配到一批URL时,你自然要解析它,所以你要访问网页原始地址,自然,客户端与服务器端要建立连接,通用http协议,访问到网站域名,然后解析域名,映射到一个准确的IP地址,进行读取操作

通信请求(发送与接收数据)连接建立成功后,根据http协议,我们会构造请求体发送给服务器,这里我们引入Socket通信方法(见下图)
8f3fdf81ee170cfc5f30cc4b013adec8_b.png
Socket提供了通信的端口,这样就不会产生"碰撞"现象。服务器在接收到收集端信息之后,会先返回一个头信息(下图)
e1b45af162f42452fc2a175d3d2520a7_b.png

针对http头信息,我们将进行判断是否获取该网页,如果获取,将会返回一个http头信息,其中包含文件类型、发送时间之类的信息,然后会返回http body 信息,包含网页的全部内容,根据需求将返回的内容存储下来,否则取消该请求,执行下一个请求。

梳理一下这个过程就是:
    爬取目标URL-访问URL-申请获取相关页面内容-返回页面内容-存储

写在后面

写的不好,但我还是争取把这一系列的文章写完吧,下一节讲一讲对搜集的信息如何处理-信息处理模块,喜欢的还请支持一下:)

青年 ---------------

735 声望
186 粉丝
0 条评论
推荐阅读
PHP手写MVC (五)—— 路由
路由是一个框架中必不可少的组件,其作用是把 URL 按照预定规则解析到特定控制器中。 我们在这里定义了两种路由规则: 查询字符串。在路径后面使用问号加参数,多个参数用 & 分隔。在配置文件使用 querystrin...

entner4阅读 3.3k

Mysql索引覆盖
通常情况下,我们创建索引的时候只关注where条件,不过这只是索引优化的一个方向。优秀的索引设计应该纵观整个查询,而不仅仅是where条件部分,还应该关注查询所包含的列。索引确实是一种高效的查找数据方式,但...

京东云开发者2阅读 924

封面图
ElasticSearch必知必会-基础篇
定义: 相同文档结构(Mapping)文档的结合 由唯一索引名称标定 一个集群中有多个索引 不同的索引代表不同的业务类型数据 注意事项: 索引名称不支持大写 索引名称最大支持255个字符长度 字段的名称,支持大写,...

京东云开发者2阅读 544

封面图
跟烤冷面一起做SEO实验:开篇词
我可怜的网站一切的起因都源于我去年年底创建的网站 腐蚀脚本,既然建立了网站,总是希望有人看的,然而事实就是这么残酷,我的博客真的没有多少观众老爷捧场 0.0这里我也不管我那可怜的自尊心了,给大家看看网站...

烤冷面阅读 511

如何设计一个面向未来的云原生数据库?
很荣幸我们最新的论文《Manu: A Cloud Native Vector Database Management System》被数据库领域国际顶会 VLDB'22 录用。这两天刚好在大会上分享了论文内容。正好趁热打铁写一篇文章,将梳理后的论文内容分享给大...

Zilliz阅读 538

封面图
ChatGPT集成之前,让我们复习一下即将过时的知识
各大搜索引擎集成 ChatGPT 的步调已经在逐步加紧了。也许这将极大的改变搜索引擎的生态。那么就让我们在时代迎来巨变之前,复习一下即将过时的搜索引擎知识吧。

newbe36524阅读 286

封面图
ChatGPT 不是黑魔法,“替代搜索引擎”言之尚早
整个 LLM 和搜索领域都已经在过去几个月内发生了翻天覆地的变化。ChatGPT 不再是一个玩具,它开始被微软、谷歌集成在搜索以及各个 SaaS 服务中,且取得了令人惊叹的效果。

Zilliz阅读 266

封面图

青年 ---------------

735 声望
186 粉丝
宣传栏