Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
oogle SEO 中的爬取、索引跟 搜索引擎排名,分別是什么意思呢?在學習SEO之前,必定要先了解一下谷歌搜索引擎的運作方式。從你的網站文章發布的那一瞬間,你的文章網址會經歷:被找到、被爬?。z索)、被索引,然后才能出現在 Google 搜索引擎里面并且加入 Google 搜索結果的排名。上面的這個過程,從網址被找到,一直到被爬取跟索引,然后再到開始在 Google 搜索引擎排名,這就是 Google 搜索引擎的運作方式。
了解 Google 搜索引擎的運作方式非常重要,因為 Google 在檢索、索引到搜索引擎排名的過程當中,有非常多的 SEO 知識在里面。例如 Google 檢索時是檢索哪些東西?Google 索引時是索引哪些東西?當你的文章開始加入 Google 搜索引擎排名,文章的初始排名是怎么決定的?這中間隱含大量的 SEO 知識跟排名要素(Ranking factors)在里面。
如果你還不知道SEO中的爬取、索引跟排名的整個過程以及運作方式,本篇文章會做一個完整的介紹,讓你了解 Google 搜索引擎的基本運作原理。
當一個新的網址出現的時候,它一定會經歷「被找到」的過程,所以雖然我們可以將 Google 搜索引擎的運作方式分成:檢索(爬取)、索引跟排名,但其實前面還有一個「找到」網址的過程。
這里將網址被找到、爬?。z索)、索引跟排名,簡單說明如下。
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 關鍵詞排名中起到一定程度的作用,有些影響作用很大(例如反向鏈接),有些影響作用比較?。ɡ珀P鍵字出現在 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小時內與您取得聯系。