oogle SEO 中的爬取、索引跟 搜索引擎排名,分别是什么意思呢?在学习SEO之前,必定要先了解一下谷歌搜索引擎的运作方式。从你的网站文章发布的那一瞬间,你的文章网址会经历:被找到、被爬取(检索)、被索引,然后才能出现在 Google 搜索引擎里面并且加入 Google 搜索结果的排名。上面的这个过程,从网址被找到,一直到被爬取跟索引,然后再到开始在 Google 搜索引擎排名,这就是 Google 搜索引擎的运作方式。
了解 Google 搜索引擎的运作方式非常重要,因为 Google 在检索、索引到搜索引擎排名的过程当中,有非常多的 SEO 知识在里面。例如 Google 检索时是检索哪些东西?Google 索引时是索引哪些东西?当你的文章开始加入 Google 搜索引擎排名,文章的初始排名是怎么决定的?这中间隐含大量的 SEO 知识跟排名要素(Ranking factors)在里面。
如果你还不知道SEO中的爬取、索引跟排名的整个过程以及运作方式,本篇文章会做一个完整的介绍,让你了解 Google 搜索引擎的基本运作原理。
当一个新的网址出现的时候,它一定会经历「被找到」的过程,所以虽然我们可以将 Google 搜索引擎的运作方式分成:检索(爬取)、索引跟排名,但其实前面还有一个「找到」网址的过程。
这里将网址被找到、爬取(检索)、索引跟排名,简单说明如下。
Google 找到网址
当一个新页面出现时,Google 的爬虫必然会先找到该网址,并且将该网址加入网址库,然后比对一下网址库里面是不是有这条网址,如果确认是新的网址,就会按排时间去检索(爬取)。
在 Google Search Console 里面的「涵盖范围」功能当中,你也可以清楚看到一条网址它的「发现方式」,可能是从你提交的 Sitemap 当中发现的,也有可能是从别的网址找到你这条链接的。
seo
Google 爬存(检索)
当有新的网址出现在 Google 数据库中的网址库之后,就会安排时间去检索,其实「检索」是官方的名称,熊猫先生也比较喜欢用「检索」这个词,不过在 SEO 界里,检索很常被称作「爬取」,你只要知道它们指的都是 Crawl 就可以了。无论是爬取还是检索,都是指 Crawl 。
在 Google search Console 里面的「涵盖范围」功能,你也可以很清楚的看到关于「检索」的讯息。下面有两个重要的观念:
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 搜索引擎的运作原理,基本上就是四个阶段:网址被找到、网址被爬取、网址被索引跟网址被排名。简单的讲,谷歌搜索引擎的运作原理有这四个阶段。
从事 SEO 工作的人必须非常了解这四个阶段的各种 SEO 细节,你才能从中找到一些问题,例如以下几个重点:
关于 Google 搜索引擎的运作原理,其实 Matt Cutts 在 Youtube 网站上有一段视频,讲解的非常清楚,这段视频建议一定要看。Matt Cutts 的这段视频清楚的解释了:Google 爬取、索引跟排名的过程。
在 Google 搜索引擎的关键词排名的过程中,除了参考 Google 索引中的资料,另外还有 Pagerank 跟 200 多条 SEO 排名要素(注意:Google 索引中的资料,有些本身就是排名要素)。
除了上面这只影片之外,Matt Cutts 在另外一只影片,也提到了 Google 搜索引擎的运作方式,下面这只视频也建议一定要看,你会对 Google 搜索引擎的运作原理与搜索引擎排名有更深的理解。
在 Google 的「索引」过程当中,有件事特别重要,那就是「正向索引」跟「倒序索引」,如果不是具有理工背景的人,可能很难理解这两个概念。
下面分别解释 Google 索引中的正向索引与倒序索引。
正向索引
每个网址都被指派一个独一无二的 DocID,这个数据表中储存着该网页的重要关键词。
倒序索引
Google 透过正向索引的数据,改变其索引方式,换成以关键字为键值的数据表,每个数据列都有一个 KeywordID,每个 KeywordID 里面包含着重要的网址(DocID)。
当用户在 Google 搜索关键词的时候,Google 会去调用倒序索引里面的资料,这样查询速度才会快,因为如果使用正向索引资料表,这样查询会变得超级慢,因为网路上有上百亿个网页,这计算时间实在太过庞大,这也是为什么原本的正向索引必须改成倒序索引的原因。
seeo
除了处理 API 请求和 HTML 等传统内容外, Web 服务器应处理双向文件传输。 非常大的文件可能需要在不占用太多系统内存的中传输。
您还可以提供对文件目录的访问权限 (ands 子目录,任何深度) 与静态文件 .
为了处理大文件,FastAPI 的上传和下载 功能需要以下额外模块:
FastAPI 以 API 开发为目标, 本书中的大多数示例都使用了JSON请求 和响应。 但是在最后一章中,你看到了表格,它们的处理方式不同。 本章介绍文件,这些文件在某些方面被视为表单。
FastAPI 提供两种文件上传技术: 文件() 和上传文件 。
File() 用作直接文件上传的类型。 您的路径函数可能是同步的 ( def ) 或异步(异步定义), 但是异步版本更好,因为它不会 在上传文件时绑定您的 Web 服务器。
FastAPI 会将文件分成块并重新组装 在内存中,所以 File() 应该只用于 相对较小的文件。 而不是假设输入是 JSON, FastAPI 将文件编码为表单元素。
让我们编写代码来请求文件,并对其进行测试。 您可以获取计算机上的任何文件进行测试, 或者从等网站下载一个。 我从那里拿了一个 1K 文件, 并将其本地保存为 。
在例 19-1 中, 将这些行添加到您的顶部 :
@app . post ( "/small" )
async def upload_small_file ( small_file : bytes=File ()) -> str :
return f "file size: { len ( small_file ) } "
Uvicorn 重新启动后,尝试示例 19-2 中的 Httpi 测试:
$ http -f -b POST http://localhost:8000/small small_file@1KB.bin
"file size: 1000"
一些注意事项:
示例 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 服务器 正在上传的片段:
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 使用 一个千兆字节的文件 () 我从中抓住的。
$ 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:
$ http -b http://localhost:8000/small/1KB.bin
-----------------------------------------
| NOTE: binary data not shown in terminal |
-----------------------------------------
如果您不信任该抑制消息, 示例 19-9 通过管道将输出传输到 像 WC 这样的实用程序,用于确保您返回 1,000 字节:
$ 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是随附的测试。 (这首先需要文件以及 , 并且需要更长。
$ http -b http://localhost:8000/big/1GB.bin | wc -c
1000000000
传统的 Web 服务器可以处理服务器文件 就好像它们在普通文件系统上一样。 FastAPI 允许你做到这一点 与静态文件 .
对于此示例,让我们创建一个目录 (无聊的)免费文件 供用户下载。
示例 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 进行测试:
$ http -b localhost:8000/static/
Oh. Hi!
您可以拥有任意数量的文件(以及包含文件的子目录等) 如你所愿。 在下创建一个子目录 ,并在那里放置两个文件:
我不会在这里包括这些例子。 自己尝试一下,希望有更多的命名想象力。
本章展示了如何上传或下载文件 - 小的,大的,甚至是gigantifer的。 另外,如何以怀旧(非API)Web样式提供 从目录中。
脑中文件日积月累,重重叠叠,可以使用Everthing,Listary之类的搜索软件快速查找,但难以一窥全豹,如何解决这个问题呢?可以尝试下小巧的目录快照软件——Snap2HTML。
一、动图演示
二、操作步骤
1.打开软件任意选择一个磁盘,如C盘,并如上图勾选“启用”和“创建完成时在浏览器打开”,完成后点击创建快照;
2.选择目录文件存放位置并修改文件名;
3.等待生成目录文件(速度很快);
4.生成的目录文件很小,170G的源文件目录文件只有13.4M;
5.文件生成后在默认浏览器中打开,有详细的统计数据和目录,点击对应文件夹可找到具体的文件;
6.也可以在右上角的搜索窗口用关键词进行搜索,如PPT,可找到C盘中关于PPT的文件;
7.还可以通过浏览器打开对应的文件直接查看,如视频(MP4)、音频(MP3)和图片等。
好了,以上就是快速建立电脑文件索引的方法,有需要的请在公众号知趣技能(zhiqujineng)回复“目录”即可获取软件了!
*请认真填写需求信息,我们会在24小时内与您取得联系。