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