• <td id="ae6ms"><li id="ae6ms"></li></td>
  • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
  • <table id="ae6ms"></table>
  • <td id="ae6ms"></td>
    <td id="ae6ms"></td>
  • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
  • <td id="ae6ms"></td>
  • <table id="ae6ms"><li id="ae6ms"></li></table>
  • <table id="ae6ms"></table>
    西西軟件下載最安全的下載網站、值得信賴的軟件下載站!

    首頁編程開發其它知識 → 自己開發搜索引擎關鍵詞檢測工具

    自己開發搜索引擎關鍵詞檢測工具

    相關軟件相關文章發表評論 來源:西西整理時間:2012/12/15 10:36:17字體大?。?em class="fontsize">A-A+

    作者:西西點擊:0次評論:0次標簽: 關鍵詞

    阿里巴巴關鍵詞排名查詢器V1.1 綠色簡體中文免費版
    • 類型:行業軟件大?。?i>3.7M語言:中文 評分:1.4
    • 標簽:
    立即下載

    由于工作需要,公司讓我做一個關鍵詞檢測工具,就是根據關鍵詞百度搜搜搜狗等搜索引擎查詢獲取排名站點地址等相關信息的一個東西。當我接到這個case的時候,首先聯想的是一道面試題,就是給你一個html頁面讓你檢索出這個頁面的關鍵信息,這個面試題是比較簡單的,就是正則的匹配,因此我也想用正則去獲取。不管三七二十一,首先實現再說

    其實這個已經不是最初的那個版本了,最古老的那個版本改動面目全非了,這個其實就是四條線程

    去讀取html然后分析 就這樣實現了。

    過程中遇到問題有

    沒有考慮清楚需求,頁面分析正則維護難

    解決方案一

    /// <summary>
            /// 根據標簽名稱獲取Html
            /// </summary>
            /// <param name="TagName">標簽名稱</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]);//移除最后一個
                                    TagList.Add(HTML.Substring(S, (i - S) + EndTagLength));
                                }
                            }
                        }
                    }
                }
                return TagList;
            }

    這就是一個簡單的方法獲取標簽對之間的全部html 實現了所需要的工能,但是害怕穩定性出現問題,所以棄用

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

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

    做完配置以后其實就是考慮接口實現接口做出最終的版本

    測試截圖

    整個過程中,我覺得自己出現的最大問題就是 考慮問題角度問題,我因為沒有做過 就想著如何去實現,在做的過程中發現很多問題 再去擴展 最后代碼相當混亂 也許一個月后我自己去修改都不能完成了。以后一定要先考慮好架構(姑且這么說啊),實現如果出現問題是可以解決的。

    收獲:從內部一步步往外擴展,不如從外部一步步往內部深入!

    這個差不多是總結了吧,就這樣了吧,我還要做代碼優化。

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

      相關評論

      閱讀本文后您有什么感想? 已有人給出評價!

      • 8 喜歡喜歡
      • 3 頂
      • 1 難過難過
      • 5 囧
      • 3 圍觀圍觀
      • 2 無聊無聊

      熱門評論

      最新評論

      發表評論 查看所有評論(0)

      昵稱:
      表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
      字數: 0/500 (您的評論需要經過審核才能顯示)
      推薦文章

      沒有數據

      女人让男人桶30分钟免费视频,女人张开腿让男人桶个爽,一进一出又大又粗爽视频
    • <td id="ae6ms"><li id="ae6ms"></li></td>
    • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
    • <table id="ae6ms"></table>
    • <td id="ae6ms"></td>
      <td id="ae6ms"></td>
    • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
    • <td id="ae6ms"></td>
    • <table id="ae6ms"><li id="ae6ms"></li></table>
    • <table id="ae6ms"></table>