整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Google 检索、索引、搜索引擎排名与原理! 20

Google 检索、索引、搜索引擎排名与原理! 2024教学

oogle SEO 中的爬取、索引跟 搜索引擎排名,分别是什么意思呢?在学习SEO之前,必定要先了解一下谷歌搜索引擎的运作方式。从你的网站文章发布的那一瞬间,你的文章网址会经历:被找到、被爬取(检索)、被索引,然后才能出现在 Google 搜索引擎里面并且加入 Google 搜索结果的排名。上面的这个过程,从网址被找到,一直到被爬取跟索引,然后再到开始在 Google 搜索引擎排名,这就是 Google 搜索引擎的运作方式。

了解 Google 搜索引擎的运作方式非常重要,因为 Google 在检索、索引到搜索引擎排名的过程当中,有非常多的 SEO 知识在里面。例如 Google 检索时是检索哪些东西?Google 索引时是索引哪些东西?当你的文章开始加入 Google 搜索引擎排名,文章的初始排名是怎么决定的?这中间隐含大量的 SEO 知识跟排名要素(Ranking factors)在里面。

如果你还不知道SEO中的爬取、索引跟排名的整个过程以及运作方式,本篇文章会做一个完整的介绍,让你了解 Google 搜索引擎的基本运作原理。

Google 搜索引擎的爬取、索引跟排名,是什么?

当一个新的网址出现的时候,它一定会经历「被找到」的过程,所以虽然我们可以将 Google 搜索引擎的运作方式分成:检索(爬取)、索引跟排名,但其实前面还有一个「找到」网址的过程。

这里将网址被找到、爬取(检索)、索引跟排名,简单说明如下。

Google 找到网址

当一个新页面出现时,Google 的爬虫必然会先找到该网址,并且将该网址加入网址库,然后比对一下网址库里面是不是有这条网址,如果确认是新的网址,就会按排时间去检索(爬取)。

在 Google Search Console 里面的「涵盖范围」功能当中,你也可以清楚看到一条网址它的「发现方式」,可能是从你提交的 Sitemap 当中发现的,也有可能是从别的网址找到你这条链接的。

seo

Google 爬存(检索)

当有新的网址出现在 Google 数据库中的网址库之后,就会安排时间去检索,其实「检索」是官方的名称,熊猫先生也比较喜欢用「检索」这个词,不过在 SEO 界里,检索很常被称作「爬取」,你只要知道它们指的都是 Crawl 就可以了。无论是爬取还是检索,都是指 Crawl 。

在 Google search Console 里面的「涵盖范围」功能,你也可以很清楚的看到关于「检索」的讯息。下面有两个重要的观念:

  • 是否允许检索:如果显示否,那么该网址可能是出现在robots.txt,也就是网站主在robots.txt这个档案当中不允许检索这条网址。
  • 是否允许编入索引:如果显示否,代表该网址很可能有noindex中继标记,所以才会出现不允许给页面被索引的讯息。
  • 这里特别说明:robots.txt 是用来告诉搜索引擎不要爬取特定页面,而 noindex 则是用来告诉搜索引擎不要索引特定页面。

seo

当爬虫程序爬取了你的页面之后,会将整个网页的信息压缩并存入数据库里面,在「检索」阶段,Google 存入数据库的信息就像是用户打开浏览器时得到的 HTML 网页,一直要到「索引」阶段,才会将检索的资料去芜存菁,只索引重要的信息。

Google 索引

Google 在索引阶段要处理的东西很多,因为 Google 不可能将你网页上全部的 HTML 源代码,或是各种文字都存入数据库,这样数据库会变得过于庞大而没有效益,所以 Google 「索引」阶段肯定只会索引重要的东西,而这些东西会影响你这个网址之后在某个「关键字」的排名。

那么,Google 到底索引了哪些东西?常见的会被索引的信息包含如下:

1.重要的关键词

Google 是如何提取页面中的关键词,这个只有 Google 内部人员才知道,通常提取的关键词可能也有 10 个以上,而且每个被提取出来的关键词,其权重加总之后通常不一样。

唯一可以肯定的是,页面中的Meta title、H1、H2肯定是重点。这也是为什么很多SEO人都强调关键词要出现在标题或是H2里面的重要性。

2.链接与锚文字

页面中的链接与锚点文字也是会被索引的东西。

3.图片 Alt text

图片当中的 alt text ,也是会被提取的文字。

4.关键字的文字大小(font-size)

根据 Google 的 Pagerank 原始文件,有特别提到,Google 会提取关键字大约的文字大小,文字越大通常重要性也越高。

5.文章中的粗体字

粗体字通常是<strong>或是<b>这样的标签,粗体字也会是被记录的信息。

6.关键字在页面中的位置

关键词出现在页面中的位置,也是会被记录在索引数据库里面。

除了上面提到的这几点资讯以外,Google 肯定还索引了其它东西,但很多东西是我们不知道的,这些被用来索引的东西,通常也可以视为 SEO 排名要素(Ranking factors)。

Google 排名

当你的某个页面网址被索引之后,基本上就已经可以出现在 Google 搜索引擎里面并加入排名了。Google 号称有两百多条 SEO 排名要素,这200 多条排名要素都会在整个 SEO 关键词排名中起到一定程度的作用,有些影响作用很大(例如反向链接),有些影响作用比较小(例如关键字出现在 URL 网址里)。

Google 搜索引擎的运作原理

从上面你应该已经了解到,Google 搜索引擎的运作原理,基本上就是四个阶段:网址被找到、网址被爬取、网址被索引跟网址被排名。简单的讲,谷歌搜索引擎的运作原理有这四个阶段。

  • 网址被找到
  • 爬取(又称检索)
  • 索引(又称收录)
  • 排名

从事 SEO 工作的人必须非常了解这四个阶段的各种 SEO 细节,你才能从中找到一些问题,例如以下几个重点:

  • 一个网址如果迟迟没有被检索,那会是什么原因?
  • 一个网址如果迟迟没有被索引,那会是什么原因?

关于 Google 搜索引擎的运作原理,其实 Matt Cutts 在 Youtube 网站上有一段视频,讲解的非常清楚,这段视频建议一定要看。Matt Cutts 的这段视频清楚的解释了:Google 爬取、索引跟排名的过程。

在 Google 搜索引擎的关键词排名的过程中,除了参考 Google 索引中的资料,另外还有 Pagerank 跟 200 多条 SEO 排名要素(注意:Google 索引中的资料,有些本身就是排名要素)。

除了上面这只影片之外,Matt Cutts 在另外一只影片,也提到了 Google 搜索引擎的运作方式,下面这只视频也建议一定要看,你会对 Google 搜索引擎的运作原理与搜索引擎排名有更深的理解。

Google 正向索引与倒序索引

在 Google 的「索引」过程当中,有件事特别重要,那就是「正向索引」跟「倒序索引」,如果不是具有理工背景的人,可能很难理解这两个概念。

下面分别解释 Google 索引中的正向索引与倒序索引。

正向索引

每个网址都被指派一个独一无二的 DocID,这个数据表中储存着该网页的重要关键词。

倒序索引

Google 透过正向索引的数据,改变其索引方式,换成以关键字为键值的数据表,每个数据列都有一个 KeywordID,每个 KeywordID 里面包含着重要的网址(DocID)。

当用户在 Google 搜索关键词的时候,Google 会去调用倒序索引里面的资料,这样查询速度才会快,因为如果使用正向索引资料表,这样查询会变得超级慢,因为网路上有上百亿个网页,这计算时间实在太过庞大,这也是为什么原本的正向索引必须改成倒序索引的原因。

seeo


除了处理 API 请求和 HTML 等传统内容外, Web 服务器应处理双向文件传输。 非常大的文件可能需要在不占用太多系统内存的中传输。

您还可以提供对文件目录的访问权限 (ands 子目录,任何深度) 与静态文件 .

多部件支持

为了处理大文件,FastAPI 的上传和下载 功能需要以下额外模块:

  • :pip install python-multipart
  • AIO文件:PIP安装

上传文件

FastAPI 以 API 开发为目标, 本书中的大多数示例都使用了JSON请求 和响应。 但是在最后一章中,你看到了表格,它们的处理方式不同。 本章介绍文件,这些文件在某些方面被视为表单。

FastAPI 提供两种文件上传技术: 文件() 和上传文件 。

文件()

File() 用作直接文件上传的类型。 您的路径函数可能是同步的 ( def ) 或异步(异步定义), 但是异步版本更好,因为它不会 在上传文件时绑定您的 Web 服务器。

FastAPI 会将文件分成块并重新组装 在内存中,所以 File() 应该只用于 相对较小的文件。 而不是假设输入是 JSON, FastAPI 将文件编码为表单元素。

让我们编写代码来请求文件,并对其进行测试。 您可以获取计算机上的任何文件进行测试, 或者从等网站下载一个。 我从那里拿了一个 1K 文件, 并将其本地保存为 。

在例 19-1 中, 将这些行添加到您的顶部 :

使用 FastAPI 处理小文件上传

 @app  .  post  (  "/small"  ) 
 async   def   upload_small_file  (  small_file  :   bytes=File  ())   ->   str  : 
     return   f  "file size:   {  len  (  small_file  )  }  " 

Uvicorn 重新启动后,尝试示例 19-2 中的 Httpi 测试:

使用 Httpie 上传一个小文件。

$ http -f -b POST http://localhost:8000/small small_file@1KB.bin
"file size: 1000"

一些注意事项:

  • 需要一个 -f(或 --form),因为文件像表单一样上传, 不是作为 JSON 文本。
  • small_file@1KB.bin :
    • small_file:small_file匹配 示例 19-1 中的快速 API 路径函数。
    • @ : Httpie制作表单的简写
    • 1KB.bin:正在上传的文件。

示例 19-3 是等效的编程测试:

上传一个包含请求的小文件。

 $   python 
 >>>   import   requests 
 >>>   url="http://localhost:8000/small" 
 >>>   files={  'small_file'  :   open  (  '1KB.bin'  ,   'rb'  )} 
 >>>   resp=requests  .  post  (  url  ,   files=files  ) 
 >>>   print  (  resp  .  json  ()) 
 file   size  :   1000 

上传文件

对于大文件,最好使用 上传文件 . 这将创建一个蟒蛇 假脱机临时文件对象,主要在服务器的磁盘上 而不是在内存中。 这是一个, 支持方法 read() 、write() 和 seek() 。 示例 19-4 显示了这一点, 并且还使用异步定义而不是定义 以避免在文件时阻止 Web 服务器 正在上传的片段:

使用 FastAPI 上传大文件

 from   fastapi   import   UploadFile 

 @app  .  post  (  "/big"  ) 
 async   def   upload_big_file  (  big_file  :   UploadFile  )   ->   str 
     return   f  "file size:   {  big_file  .  size  }  , name:   {  big_file  .  filename  }  " 

注意

File() 创建了一个字节对象并需要括号。 上传文件是另一类对象。

如果 Uvicorn 的起动电机尚未磨损, 现在是测试时间。 这一次 示例 19-5 和 19-6 使用 一个千兆字节的文件 () 我从中抓住的。

使用 Httpie 测试大文件上传。

$ http -f -b POST http://localhost:8000/big big_file@1GB.bin
"file size: 1000000000, name: 1GB.bin"

使用请求测试大文件上传。

 >>>   import   requests 
 >>>   url="http://localhost:8000/big" 
 >>>   files={  'big_file'  :   open  (  '1GB.bin'  ,   'rb'  )} 
 >>>   resp=requests  .  post  (  url  ,   files=files  ) 
 >>>   print  (  resp  .  json  ()) 
 file   size  :   1000000000  ,   name  :   1  GB  .  bin 

下载文件

可悲的是,重力不会使文件下载更快。 相反,有上传方法的等效项。

文件响应

首先,在示例 19-7 中, 是一次性版本, 文件响应 :

使用文件响应下载一个小文件

 from   fastapi   import   FastAPI 
 from   fastapi.responses   import   FileResponse 

 app=FastAPI  () 

 @app  .  get  (  "/small/  {name}  "  ) 
 async   def   download_small_file  (): 
     return   FileResponse  (  name  ) 

这里有一个测试在某个地方。 首先,将文件 放在与 相同的目录中。 现在,示例 19-8:

使用 Httpie 下载一个小文件

$ http -b http://localhost:8000/small/1KB.bin

 ----------------------------------------- 
| NOTE: binary data not shown in terminal |
 ----------------------------------------- 

如果您不信任该抑制消息, 示例 19-9 通过管道将输出传输到 像 WC 这样的实用程序,用于确保您返回 1,000 字节:

使用 Httpie 下载一个小文件,字节计数

$ http -b http://localhost:8000/small/1KB.bin | wc -c
    1000

流式处理响应

与文件上传类似,最好下载大文件 与流响应 , 以块的形式返回文件。 示例 19-10 显示了这一点,并使用异步 def 路径功能,以避免在不使用 CPU 时阻塞。 我现在跳过错误检查;如果文件路径 不存在,open() 调用将引发异常。

使用流式处理响应返回大文件

 from   typing   import   Generator 
 from   fastapi.responses   import   StreamingResponse 

 def   gen_file  (  path  :   str  )   ->   Generator  : 
     with   open  (  file=path  ,   mode="rb"  )   as   file  : 
         yield   file  .  read  () 

 @app  .  get  (  "/download_big/  {name}  "  ) 
 async   def   download_big_file  (  name  :  str  ){ 
     gen_expr=gen_file  (  file_path=path  ) 
     response=StreamingResponse  ( 
         content=gen_expr  , 
         status_code=200  , 
     ) 
     return   response 

gen_expr 是 gen_file() 返回的。 StreamingResponse 使用它来 可迭代内容参数, 因此,它可以分块下载文件。

示例19-11是随附的测试。 (这首先需要文件以及 , 并且需要更长。

使用 Httpie 下载大文件

$ http -b http://localhost:8000/big/1GB.bin | wc -c
 1000000000

提供静态文件

传统的 Web 服务器可以处理服务器文件 就好像它们在普通文件系统上一样。 FastAPI 允许你做到这一点 与静态文件 .

对于此示例,让我们创建一个目录 (无聊的)免费文件 供用户下载。

  • 创建一个名为的目录, 与 处于同一水平。 (这可以有任何名称,我只是称它为以帮助记住我为什么这样做。
  • 在其中放入一个名为的文本文件, 与文本内容 ABC :) .

示例 19-12 将提供任何以 开头的 URL(我也可以在这里使用任何文本字符串) 使用目录中的文件:

使用静态文件提供目录中的所有内容

 from   pathlib   import   Path 
 from   fastapi   import   FastAPI 
 from   fastapi.staticfiles   import   StaticFiles 

 app=FastAPI  () 

 # Directory containing main.py: 
 top=Path  (  __file__  )  .  resolve  .  parent 

 app  .  mount  (  "/static"  , 
     StaticFiles  (  directory=f  "  {  top  }  /static"  ,   html=True  ), 
     name="free"  ) 

顶部计算确保我将静态与 main.py 放在。 __file__变量是完整的 此文件的路径名 ()。

示例 19-13 是手动测试它的一种方法:

获取静态文件

$ http -b localhost:8000/static/abc.txt
abc :)

我传递给的html=True参数呢 静态文件() ? 这使得它的工作方式更像传统服务器, 返回文件(如果该目录中存在索引文件) 但您没有在 URL 中明确要求。 因此,让我们在目录中创建一个 文件 与内容哦。你好!,然后使用示例 19-11 进行测试:

从 /static 获取索引.html文件

$ http -b localhost:8000/static/
Oh. Hi!

您可以拥有任意数量的文件(以及包含文件的子目录等) 如你所愿。 在下创建一个子目录 ,并在那里放置两个文件:

  • :包含文本 xyz :( 。
  • :包含文本 你是怎么找到我的?

我不会在这里包括这些例子。 自己尝试一下,希望有更多的命名想象力。

回顾

本章展示了如何上传或下载文件 - 小的,大的,甚至是gigantifer的。 另外,如何以怀旧(非API)Web样式提供 从目录中。

脑中文件日积月累,重重叠叠,可以使用Everthing,Listary之类的搜索软件快速查找,但难以一窥全豹,如何解决这个问题呢?可以尝试下小巧的目录快照软件——Snap2HTML


一、动图演示



二、操作步骤



1.打开软件任意选择一个磁盘,如C盘,并如上图勾选“启用”和“创建完成时在浏览器打开”,完成后点击创建快照;



2.选择目录文件存放位置并修改文件名;



3.等待生成目录文件(速度很快);



4.生成的目录文件很小,170G的源文件目录文件只有13.4M;



5.文件生成后在默认浏览器中打开,有详细的统计数据和目录,点击对应文件夹可找到具体的文件;



6.也可以在右上角的搜索窗口用关键词进行搜索,如PPT,可找到C盘中关于PPT的文件;



7.还可以通过浏览器打开对应的文件直接查看,如视频(MP4)、音频(MP3)和图片等。


好了,以上就是快速建立电脑文件索引的方法,有需要的请在公众号知趣技能(zhiqujineng)回复“目录”即可获取软件了!