邱慧玲 王鷹漢



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