邱慧玲 王鷹漢
摘? 要:個人站長是目前大學生創(chuàng)業(yè)的主流方法,使用站長工具是網(wǎng)站運營的必備技能。文章著重探討了站長工具平臺——“搜一搜”的建設,在分析市面上已有站長工具缺點的基礎上,對“搜一搜”平臺進行了具體的系統(tǒng)分析,最終設計并建立了一個更加適合高校學生使用的新平臺,旨在為新站長們節(jié)約學習成本,提供清晰的運營流程,明確適合個人網(wǎng)站的優(yōu)化方向,助力大學生創(chuàng)業(yè)。
關(guān)鍵詞:站長工具;Elasticsearch;關(guān)鍵詞;PHP
中圖分類號:TP393.092;TP391.3? ? ? ?文獻標識碼:A 文章編號:2096-4706(2020)22-023-04
Design and Implementation of Webmaster Tool Platform “Souyisou”
——Based on Python + PHP + Elasticsearch Language
QIU Huiling,WANG Yinghan
(Shangrao Vocational & Technical College,Shangrao? 334109,China)
Abstract:Personal webmaster is the mainstream method for college students to start a business,and the use of webmaster tool is a necessary skill for website operation. This paper focuses on the construction of the webmaster tool platform——“souyisou”,based on the analysis of the shortcomings of the existing webmaster tools in the market,a specific systematic analysis of the “souyisou” platform is carried out,a new platform which is more suitable for college students is designed and established,which aims to save learning costs for new webmasters,provide a clear operation process,clarify the optimization direction for personal websites,and help college students start their own businesses.
Keywords:webmaster tool;Elasticsearch;keyword;PHP
0? 引? 言
“大眾創(chuàng)業(yè)、萬眾創(chuàng)新”的新時代開啟以來,高校紛紛建立創(chuàng)業(yè)學院,為學生創(chuàng)新創(chuàng)業(yè)提供資金、場地、學業(yè)等多方位支持及優(yōu)惠政策,極大激發(fā)了高校學生的創(chuàng)業(yè)積極性,并取得了一些成績。隨著互聯(lián)網(wǎng)時代的到來,網(wǎng)絡創(chuàng)業(yè)以其前期投入成本低,回報周期快等特點,備受大學生青睞。許多大學生在國家政策的支持下,涌入互聯(lián)網(wǎng)行業(yè),成了個人站長。但是大部分學生對于如何提升初創(chuàng)網(wǎng)站的百度搜錄數(shù)量以及如何提升網(wǎng)站的搜索引擎排名是陌生的。而目前有效解決這一問題的方法是運用站長工具。
站長工具是幫助站長運營網(wǎng)站的一類綜合性的工具的統(tǒng)稱,一般具有排名搜索,網(wǎng)站收錄查詢等功能。本院學生在使用過程中發(fā)現(xiàn)市面上成熟的站長工具系統(tǒng)存在著界面臃腫,流程冗余,對于新站長不友好,學習成本太高,并且商業(yè)廣告過多等缺點。為了支持學生創(chuàng)業(yè),作者設計并開發(fā)了一個“傻瓜式”站長工具,取名為“搜一搜”,該系統(tǒng)在具備常用的功能外,增加了特色的個人網(wǎng)站監(jiān)控功能,實時引導學生如何對網(wǎng)站進行優(yōu)化。
1? 系統(tǒng)分析
對于個人網(wǎng)站的站長來說,網(wǎng)站推廣是網(wǎng)站運營過程中最重要的問題。而免費的SEO優(yōu)化就是網(wǎng)站流量的最大來源,如何高效并正確的對網(wǎng)站進行搜索引擎優(yōu)化[1]是站長日常工作中面臨的首要困難。而因為優(yōu)化方向錯誤導致網(wǎng)站排名仍然不理想,也是困擾站長的巨大難題。本系統(tǒng)旨在幫助站長正確的選擇適合自己優(yōu)化的方向,提升站長日常工作的效率。結(jié)合對站長們需求的調(diào)研,將該平臺設計為下文所述的6個功能模塊,如圖1所示。
使用作者設計的“搜一搜”平臺后,站長們不但能通過查詢本站指定關(guān)鍵詞在各搜索引擎的排名情況,還能查詢網(wǎng)站總共被收錄的所有關(guān)鍵詞,同時,也可以挖掘具有優(yōu)化潛力的關(guān)鍵詞,查詢并統(tǒng)計某個關(guān)鍵詞在網(wǎng)站中使用的頻率,查詢網(wǎng)站的備案情況等。最后通過注冊登錄添加自己的網(wǎng)站并經(jīng)過驗證后,可以監(jiān)控自己的網(wǎng)站各關(guān)鍵詞的排名情況并生成報表。系統(tǒng)功能需求有以下幾個方面:
(1)綜合排名查詢:綜合排名查詢提供站長單個或批量查詢網(wǎng)站指定關(guān)鍵詞在百度、搜狗、360搜索等搜索引擎中的排名數(shù)據(jù)。
(2)關(guān)鍵詞查詢:關(guān)鍵詞搜索工具可查詢指定關(guān)鍵詞以及相似關(guān)鍵詞在搜索引擎中的搜索量,提供周平均搜索量,日平均搜索量等數(shù)據(jù),讓站長們能夠更好地了解用戶的搜索習慣。
(3)關(guān)鍵詞挖掘:關(guān)鍵詞挖掘工具通過工具挖掘功能,可以挖掘精準的關(guān)鍵詞,為企業(yè)網(wǎng)站優(yōu)化提供參考,比如短關(guān)鍵詞,以及精準度高的關(guān)鍵詞。
(4)詞頻查詢:通過網(wǎng)站的地址,以及關(guān)鍵詞計算該網(wǎng)站關(guān)鍵詞在內(nèi)容中所占的權(quán)重,可分別計算主頁、內(nèi)頁。對于搜索引擎優(yōu)化來說這是一個非常重要的參數(shù),在網(wǎng)頁中適當增加關(guān)鍵詞的詞頻可提高在搜索引擎中的權(quán)重。
(5)網(wǎng)站監(jiān)控:通過添加網(wǎng)站,可實時監(jiān)控網(wǎng)站被搜索引擎收錄的頁面數(shù)量以及相應關(guān)鍵詞在搜索引擎中的排名變化,讓站長們對自己網(wǎng)站的優(yōu)化效果有一個直觀清晰的認識。
(6)備案查詢:查詢網(wǎng)站的ICP備案信息、個人備案信息、企業(yè)備案信息,可支持批量查詢[2]。
2? 系統(tǒng)的設計與實現(xiàn)
本系統(tǒng)采用Pycharm、NetBeans作為開發(fā)工具,利用Python以及PHP作為開發(fā)語言,MySQL以及Elasticsearch作為數(shù)據(jù)存儲工具。系統(tǒng)的設計如圖2所示。首先使用Python程序作為爬蟲,24小時不間斷的爬取大量搜索引擎數(shù)據(jù)以及生成相應網(wǎng)站日志,接著將Elasticsearch作為分布式全文搜索引擎,以文檔的形式存儲海量數(shù)據(jù)[3]。在使用PHP結(jié)合MySQL作為網(wǎng)站客戶端供客戶使用。
2.1? 搜索引擎數(shù)據(jù)的抓取
搜索引擎數(shù)據(jù)抓取是通過使用Python的Requests庫,模擬請求。Selenium庫模擬操作來抓取搜索引擎海量的數(shù)據(jù)。最后經(jīng)過初步的處理,以文檔的形式存入Elasticsearch。
2.2? Elasticsearch部署
本系統(tǒng)需要處理的大數(shù)據(jù)使用普通的數(shù)據(jù)庫是無法及時有效處理。為此,采用目前熱門的Elasticsearch分布式全文搜索引擎技術(shù)[4]。該引擎支持海量的、PB級的大數(shù)據(jù)搜索,在面對海量數(shù)據(jù)的時候,搜索速度極快。我們下載并安裝Elasticsearch,并進行初始化配置,啟動Elasticsearch后,新建文檔用以存儲數(shù)據(jù)。
2.3? PHP Web網(wǎng)站的構(gòu)建
本系統(tǒng)使用PHP7+ThinkPHP+MySQL作為網(wǎng)站的主體架構(gòu)。前端使用HTML+CSS3+jQuery+Layui框架的架構(gòu)做響應式開發(fā)。
2.4? 網(wǎng)站界面的設計
2.4.1? 網(wǎng)站首頁
網(wǎng)站首頁是網(wǎng)頁要表達的中心思想,是訪問者的最初印象。一個好的首頁能夠極大程度的提升網(wǎng)站訪問的留存率,并吸引他對網(wǎng)站的功能進行更深入的了解。結(jié)合現(xiàn)在以移動端為主的瀏覽趨勢?!八岩凰选逼脚_運用響應式的前端開發(fā)技術(shù),設計出簡潔明朗的首頁及內(nèi)頁風格,同時還做到內(nèi)容翔實,功能齊全的優(yōu)點。幫助訪問者在非常短的時間里獲取自己想要的信息。首頁設計如圖3所示。
2.4.2? 會員登錄注冊頁
會員登錄注冊界面主要提供注冊會員以及用戶登錄的功能,從而體驗更高級的功能。本網(wǎng)站開通了微信登錄功能,減少客戶注冊流程,更快捷的登錄網(wǎng)站。界面如圖4所示。
2.5? MySQL數(shù)據(jù)庫的設計
MySQL數(shù)據(jù)庫主要采用MyISAM引擎,提升搜索速度。包含的主要表有user會員表、Website站點表、keywords關(guān)鍵詞表等。Website表的結(jié)構(gòu)語句為:
1. CREATE TABLE `seo_website` (
2.? `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
3.? `website_url` varchar(255) DEFAULT NULL COMMENT '網(wǎng)站域名',
4.? `start_time` datetime DEFAULT NULL COMMENT '域名注冊時間',
5.? `end_time` datetime DEFAULT NULL COMMENT '域名到期時間',
6.? `status_time` datetime DEFAULT NULL COMMENT '域名備案審核時間',
7.? `record_num` varchar(255) DEFAULT NULL COMMENT '備案號',
8.? `nature` varchar(255) DEFAULT NULL COMMENT '備案性質(zhì)',
9.? `name` varchar(255) DEFAULT NULL COMMENT '備案名稱',
10.? `create_time` datetime DEFAULT NULL COMMENT '網(wǎng)站添加時間',
11.? PRIMARY KEY (`id`) USING BTREE,
12.? UNIQUE KEY `website_url` (`website_url`),
13.? KEY `status_time` (`status_time`),
14.? KEY `record_num` (`record_num`),
15.? KEY `name` (`name`) USING BTREE
16.) ENGINE=MyISAM AUTO_INCREMENT=5159413 DEFAULT CHARSET=utf8;
3? “搜一搜”系統(tǒng)開發(fā)的難點及創(chuàng)新點
在系統(tǒng)開發(fā)過程的中,并不是一帆風順,我們也遇到了各種困難,并且通過不斷的嘗試創(chuàng)新,探索出了解決問題的較好方法。主要難點及創(chuàng)新點有三點:
(1)超數(shù)據(jù)不顯示問題及解決方法。使用PHP讀取Elasticsearch數(shù)據(jù)進行分頁時,發(fā)現(xiàn)使用普通查詢,超過一萬條數(shù)據(jù)時不會顯示。傳統(tǒng)的解決方案是通過修改index.max_result_window參數(shù)改變限制的大小,但是這種方法治標不治本,并不能從本質(zhì)上解決問題。而Elasticsearch官方推薦是采用Scrolling游標查詢。但游標查詢因為是通過查詢上一頁時保存的游標來查詢下一頁數(shù)據(jù),所以無法跳轉(zhuǎn)查詢。而網(wǎng)站用戶往往不僅僅需要順序的前往下一頁,有時也需要跳轉(zhuǎn)分頁。此時用游標查詢的話,需要經(jīng)過多次循環(huán)滾動計算跳轉(zhuǎn)頁的游標地址,速度將會非常慢,對用戶體驗來說將會是災難性的。經(jīng)過團隊不懈的討論和研究,本系統(tǒng)突破性地解決了這個問題。具體的處理方案為:當用戶訪問時,一萬條以內(nèi)的數(shù)據(jù)采用普通查詢,并且在用戶第一次訪問時,將該請求存入后臺計劃任務,由計劃任務去查詢該條件下的數(shù)據(jù),在一萬條以后的每一條游標存入Redis。當客戶前臺分頁跳轉(zhuǎn)超過一萬條數(shù)據(jù)時,直接讀取Redis中的游標數(shù)據(jù)獲取當頁內(nèi)容。采用這種方式便可以完美的解決這個問題。而這里使用Redis緩存技術(shù)的原理是該數(shù)據(jù)可能需要頻繁的進行修改與讀取,所以通過Redis存入內(nèi)存能夠極大地提高效率。
(2)使用PHP分析Elasticsearch數(shù)據(jù)難題及解決方法。通過研究,我們總結(jié)出可以通過PHP聚合查詢Elasticsearch中數(shù)據(jù),例如統(tǒng)計聚合(Stats Aggregation),它屬于multi-value,基于文檔的某個值,計算出一些統(tǒng)計信息(min、max、sum、count、avg5個值)。詞聚合(Terms Aggregation)基于某個field,該field內(nèi)的每一個“唯一詞元”為一個桶,同時計算每個桶內(nèi)文檔個數(shù),默認返回順序是按照文檔個數(shù)多少排序,它屬于multi-bucket,當不返回所有buckets時(返回個數(shù)由size控制),文檔個數(shù)可能就不準確。過濾聚合(Filter Aggregation),在一個條件的基礎下對當前的文檔進行過濾的聚合等。通過這些聚合查詢方式,實現(xiàn)類似于MySQL中g(shù)roup having的查詢效果。
(3)部分數(shù)據(jù)庫更新頻繁,使用MySQL存儲會導致鏈接數(shù)過多。針對這一現(xiàn)象,我們引入了Redis緩存系統(tǒng)解決這個問題。將頻繁更新的數(shù)據(jù)保存進Redis里,提升了網(wǎng)站的負載能力。
4? 結(jié)? 論
本系統(tǒng)平臺設計基于Python+PHP+Elasticsearch技術(shù),從系統(tǒng)分析到系統(tǒng)的設計與實現(xiàn),最后成功完成“搜一搜”平臺的開發(fā)。在開發(fā)過程中,提出了異步分類分頁法,解決了使用PHP讀取Elasticsearch數(shù)據(jù)進行分頁時,使用普通查詢超過一萬條數(shù)據(jù)不會顯示問題;而針對如何使用PHP分析Elasticsearch數(shù)據(jù)這一難題,成功運用PHP聚合查詢攻克;最后,引入了Redis緩存系統(tǒng)解決使用MySQL存儲會導致鏈接數(shù)過多問題。
參考文獻:
[1] 趙路路.基于用戶反饋的空間關(guān)鍵字個性化語義查詢方法 [D].遼寧:遼寧工程技術(shù)大學,2019.
[2] 林迅.基于流量分析實現(xiàn)網(wǎng)站備案監(jiān)控系統(tǒng)的架構(gòu)設計 [J].網(wǎng)絡安全技術(shù)與應用,2015(9):60+62.
[3] 魏俊博.基于全文搜索引擎的大規(guī)模軌跡數(shù)據(jù)高效查詢統(tǒng)計研究 [D].西安:長安大學,2019.
[4] 曹芳芳.基于海量數(shù)據(jù)的實時查詢處理 [D].武漢:武漢理工大學,2013.
作者簡介:邱慧玲(1991—),女,漢族,江西上饒人,助教,碩士,研究方向:人工智能、網(wǎng)頁設計與制作。