C#實現百度網站收錄和排名查詢功能思路及執行個體

來源:互聯網
上載者:User

標籤:元素   cte   百度   觀察   related   var   display   抽象類別   span   


一、前言

偶然一次在vs2012預設的專案檔夾裡發現了以前自己做的一個關於SEO的類庫,主要是用來查詢某個網址的收錄次數還有網站的排行數,後來重構了下,今天拿出來寫篇文章,說說自己是如何思考的並完成的。


二、問題描述

首先需要考慮的是能夠支援哪些搜尋引擎的查詢,首先是百度,然後是必應、搜狗、搜搜、360。本來想支援Google但是一想不對,根本不好訪問的,所以暫時不算在內。而我們實際要做的就是根據一個網址能夠檢索出這個網址的在各個搜尋引擎的收錄次數以及在不同關鍵詞下的網址排行,這裡出入的只有網址還有若干的關鍵詞,而輸出則是該網址在不同搜尋引擎下的收錄次數以及在各個關鍵詞下的排行數。

但是這裡有個問題,就是排行數,如果檢索的網址在前100還好,如果排名很後面,那麼問題就來了,那樣會讓使用者等待很長時間才能看到結果,但是使用者可能只想知道排行前100的具體排名,而那些超過的則只要顯示100以後就可以了,而這些就需要我們前期考慮好,這樣後面的程式才好做。


三、解決思路

相信很多人都能夠想到,就是利用WebClient將將需要的頁面下載下來,然後用正則從中擷取我們感興趣的部分,然後利用程式去處理。而關鍵難度就是在這個正則的編寫,首先我們先從簡單的開始。


四、收錄次數

首先是網站的收錄次數,我們可以在百度中輸入site:www.cnblogs.com/然後我們就可以看到如下的頁面:

而我們所需要的收錄次數就是 5,280,000 這段數字,我們接著查看頁面元素:

接著我們再觀察其他的搜尋引擎可以發現都是類似的,所以我們的思路這個時候應該就得出了,最後就是如何組織網址,這部分我們看地址欄?wd=site%3Awww.cnblogs.com%2F這段就知道怎麼寫了。

稍等這個時候我們可能心急一個一個實現,這樣後面我們就沒法集中的調用,同時也會影響以後的新增,所以我們要規定一個要實現收錄數功能的抽象類別,這樣就能夠在不知曉具體實現的情況統一使用,並且還能夠在以後輕鬆的新增新的搜尋引擎,而這種方式屬於策略模式(Stategry),下面我們來慢慢分析出這個抽象類別的具體內容。

首先每個實現這個抽象類別的具體類都應該是對應某個搜尋引擎,那麼就需要有一個基本網址,同時還要留下預留位置,比如根據上面百度的這個我們就得出這樣一個字串

http://www.baidu.com/s?wd=site%3A{0}

其中{0}就是為真正需要檢索網址的預留位置,擷取下載頁面的路徑是所有具體類都需要的所以我們直接將實現放在抽象類別中,比如下面的代碼:


代碼如下:


/// <summary>

/// 服務提供者

/// </summary>

protected String SearchProvider { get; set; }

/// <summary>

/// 需要檢索的網址

/// </summary>

protected String SiteUrl { get; set; }

/// <summary>

/// 搜尋服務提供網址

/// </summary>

protected String BaseUrl { get; set; }

/// <summary>

/// 後頁面網址

/// </summary>

/// <param name=”site”>需要查詢的網址</param>

/// <returns>拼接後的網址</returns>

protected String GetDownUrl(string site)

{

return string.Format(BaseUrl, HttpUtility.UrlEncode(site));

}

除聲明外, 跑步客文章均為原創,轉載請以連結形式標明本文地址
  C#實現百度網站收錄和排名查詢功能思路及執行個體

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23153.html






相關內容C#中如何利用Regex判斷字元C#中將DataTable轉換成CSV檔案的方法C#資料結構之隊列(Quene)執行個體詳解C#定製Excel介面並實現與資料庫互動的方法
C#超實用程式碼片段合集理解C#中的枚舉(簡明易懂)C#中this的使用執行個體分析c#?DXML?a?????t3?′í?a??·?·¨

C#實現百度網站收錄和排名查詢功能思路及執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.