西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁(yè)編程開發(fā)其它知識(shí) → 自己開發(fā)搜索引擎關(guān)鍵詞檢測(cè)工具

自己開發(fā)搜索引擎關(guān)鍵詞檢測(cè)工具

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2012/12/15 10:36:17字體大。A-A+

作者:西西點(diǎn)擊:0次評(píng)論:0次標(biāo)簽: 關(guān)鍵詞

阿里巴巴關(guān)鍵詞排名查詢器V1.1 綠色簡(jiǎn)體中文免費(fèi)版
  • 類型:行業(yè)軟件大。3.7M語(yǔ)言:中文 評(píng)分:1.4
  • 標(biāo)簽:
立即下載

由于工作需要,公司讓我做一個(gè)關(guān)鍵詞檢測(cè)工具,就是根據(jù)關(guān)鍵詞百度搜搜搜狗等搜索引擎查詢獲取排名站點(diǎn)地址等相關(guān)信息的一個(gè)東西。當(dāng)我接到這個(gè)case的時(shí)候,首先聯(lián)想的是一道面試題,就是給你一個(gè)html頁(yè)面讓你檢索出這個(gè)頁(yè)面的關(guān)鍵信息,這個(gè)面試題是比較簡(jiǎn)單的,就是正則的匹配,因此我也想用正則去獲取。不管三七二十一,首先實(shí)現(xiàn)再說(shuō)

其實(shí)這個(gè)已經(jīng)不是最初的那個(gè)版本了,最古老的那個(gè)版本改動(dòng)面目全非了,這個(gè)其實(shí)就是四條線程

去讀取html然后分析 就這樣實(shí)現(xiàn)了。

過(guò)程中遇到問題有

沒有考慮清楚需求,頁(yè)面分析正則維護(hù)難

解決方案一

/// <summary>
        /// 根據(jù)標(biāo)簽名稱獲取Html
        /// </summary>
        /// <param name="TagName">標(biāo)簽名稱</param>
        /// <param name="HTML">html</param>
        /// <returns>返回值列表</returns>
        public  List<string> GetHtmlTagByName(string TagName, string HTML)
        {
            HTML = Regex.Replace(HTML, @"<\s+", "<", RegexOptions.IgnoreCase);
            HTML = Regex.Replace(HTML, @"\s+>", ">", RegexOptions.IgnoreCase);
            HTML = Regex.Replace(HTML, @"</\s+", "</", RegexOptions.IgnoreCase);
            List<string> TagList = new List<string>();
            string Tag = string.Empty;
            HTML = HTML.ToLower();
            int TagLength = TagName.Length;
            int StartTagLength = TagLength + 2;
            int EndTagLength = TagLength + 3;
            List<int> IndexList = new List<int>();
            for (int i = 0; i < HTML.Length; i++)
            {
                if (HTML[i] == '<')
                {
                    if ((HTML.Length - i) >= StartTagLength)
                    {//<div> | <div\s
                        string TemTag = HTML.Substring(i, StartTagLength);
                        if (TemTag == '<' + TagName + ' ' || TemTag == '<' + TagName + '>')
                        {
                            IndexList.Add(i);
                        }
                    }
                    if ((HTML.Length - i) >= EndTagLength)
                    {//</div>
                        string TemTag = HTML.Substring(i, EndTagLength);
                        if (TemTag == "</" + TagName + '>')
                        {
                            if (IndexList.Count > 0)
                            {
                                int S = IndexList[IndexList.Count - 1];
                                IndexList.Remove(IndexList[IndexList.Count - 1]);//移除最后一個(gè)
                                TagList.Add(HTML.Substring(S, (i - S) + EndTagLength));
                            }
                        }
                    }
                }
            }
            return TagList;
        }

這就是一個(gè)簡(jiǎn)單的方法獲取標(biāo)簽對(duì)之間的全部html 實(shí)現(xiàn)了所需要的工能,但是害怕穩(wěn)定性出現(xiàn)問題,所以棄用

棄用之后重新考慮思路 畫出流程圖

這樣思路更加清晰了 也考慮了配置的為題 容易修改 配置截圖

做完配置以后其實(shí)就是考慮接口實(shí)現(xiàn)接口做出最終的版本

測(cè)試截圖

整個(gè)過(guò)程中,我覺得自己出現(xiàn)的最大問題就是 考慮問題角度問題,我因?yàn)闆]有做過(guò) 就想著如何去實(shí)現(xiàn),在做的過(guò)程中發(fā)現(xiàn)很多問題 再去擴(kuò)展 最后代碼相當(dāng)混亂 也許一個(gè)月后我自己去修改都不能完成了。以后一定要先考慮好架構(gòu)(姑且這么說(shuō)啊),實(shí)現(xiàn)如果出現(xiàn)問題是可以解決的。

收獲:從內(nèi)部一步步往外擴(kuò)展,不如從外部一步步往內(nèi)部深入!

這個(gè)差不多是總結(jié)了吧,就這樣了吧,我還要做代碼優(yōu)化。

另外如果有人需要這方面的資料 或者這個(gè)工具我都可以給你,這個(gè)只是公司工作的一個(gè)小插件吧,技術(shù)含量也沒有,主要是正則 ,我們還可以交流。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)
    推薦文章

    沒有數(shù)據(jù)