最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實(shí)現(xiàn)通過(guò)程序自動(dòng)抓取遠(yuǎn)程Web網(wǎng)頁(yè)信息的代碼

 更新時(shí)間:2007年04月16日 00:00:00   作者:  
通過(guò)程序自動(dòng)的讀取其它網(wǎng)站網(wǎng)頁(yè)顯示的信息,類似于爬蟲程序。比方說(shuō)我們有一個(gè)系統(tǒng),要提取BaiDu網(wǎng)站上歌曲搜索排名。分析系統(tǒng)在根據(jù)得到的數(shù)據(jù)進(jìn)行數(shù)據(jù)分析。為業(yè)務(wù)提供參考數(shù)據(jù)。
  為了完成以上的需求,我們就需要模擬瀏覽器瀏覽網(wǎng)頁(yè),得到頁(yè)面的數(shù)據(jù)在進(jìn)行分析,最后把分析的結(jié)構(gòu),即整理好的數(shù)據(jù)寫入數(shù)據(jù)庫(kù)。那么我們的思路就是:
  1、發(fā)送HttpRequest請(qǐng)求。
  2、接收HttpResponse返回的結(jié)果。得到特定頁(yè)面的html源文件。
  3、取出包含數(shù)據(jù)的那一部分源碼。
  4、根據(jù)html源碼生成HtmlDocument,循環(huán)取出數(shù)據(jù)。
  5、寫入數(shù)據(jù)庫(kù)。 
程序如下:  

        //根據(jù)Url地址得到網(wǎng)頁(yè)的html源碼
         private string GetWebContent(string Url)
         {
             string strResult="";
             try
             {
                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
    //聲明一個(gè)HttpWebRequest請(qǐng)求
                 request.Timeout = 30000;
                //設(shè)置連接超時(shí)時(shí)間
                 request.Headers.Set("Pragma", "no-cache");
                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                 Stream streamReceive = response.GetResponseStream();
                 Encoding encoding = Encoding.GetEncoding("GB2312");
                 StreamReader streamReader = new StreamReader(streamReceive, encoding);
                 strResult = streamReader.ReadToEnd();
             }
             catch
             {
                 MessageBox.Show("出錯(cuò)");
             }
             return strResult;
         }
為了使用HttpWebRequest和HttpWebResponse,需填名字空間引用
  using System.Net;

以下是程序具體實(shí)現(xiàn)過(guò)程:
private void button1_Click(object sender, EventArgs e)
         {
            //要抓取的URL地址
             string Url = "http://list.mp3.baidu.com/topso/mp3topsong.html?id=1#top2";

            //得到指定Url的源碼
   string strWebContent = GetWebContent(Url);

             richTextBox1.Text = strWebContent;
    //取出和數(shù)據(jù)有關(guān)的那段源碼
             int iBodyStart = strWebContent.IndexOf("<body", 0);
             int iStart = strWebContent.IndexOf("歌曲TOP500", iBodyStart);
             int iTableStart = strWebContent.IndexOf("<table", iStart);
             int iTableEnd = strWebContent.IndexOf("</table>", iTableStart);
             string strWeb = strWebContent.Substring(iTableStart, iTableEnd - iTableStart + 8);

            //生成HtmlDocument
   WebBrowser webb = new WebBrowser();
             webb.Navigate("about:blank");
             HtmlDocument htmldoc = webb.Document.OpenNew(true);
             htmldoc.Write(strWeb);
             HtmlElementCollection htmlTR = htmldoc.GetElementsByTagName("TR");
             foreach (HtmlElement tr in htmlTR)
             {
                 string strID = tr.GetElementsByTagName("TD")[0].InnerText;
                 string strName = SplitName(tr.GetElementsByTagName("TD")[1].InnerText, "MusicName");
                 string strSinger = SplitName(tr.GetElementsByTagName("TD")[1].InnerText, "Singer");
                 strID = strID.Replace(".", "");
                //插入DataTable
                 AddLine(strID, strName, strSinger,"0");

                 string strID1 = tr.GetElementsByTagName("TD")[2].InnerText;
                 string strName1 = SplitName(tr.GetElementsByTagName("TD")[3].InnerText, "MusicName");
                 string strSinger1 = SplitName(tr.GetElementsByTagName("TD")[3].InnerText, "Singer");
                //插入DataTable
                 strID1 = strID1.Replace(".", "");
                 AddLine(strID1, strName1, strSinger1,"0");

                 string strID2 = tr.GetElementsByTagName("TD")[4].InnerText;
                 string strName2 = SplitName(tr.GetElementsByTagName("TD")[5].InnerText, "MusicName");
                 string strSinger2 = SplitName(tr.GetElementsByTagName("TD")[5].InnerText, "Singer");
                //插入DataTable
                 strID2 = strID2.Replace(".", "");
                 AddLine(strID2, strName2, strSinger2,"0");

             }
            //插入數(shù)據(jù)庫(kù)
             InsertData(dt);
   
             dataGridView1.DataSource = dt.DefaultView;
}

相關(guān)文章

  • C#讀取txt文件數(shù)據(jù)的方法實(shí)例

    C#讀取txt文件數(shù)據(jù)的方法實(shí)例

    讀取txt文本數(shù)據(jù)的內(nèi)容,是我們開發(fā)中經(jīng)常會(huì)遇到的一個(gè)功能,這篇文章主要給大家介紹了關(guān)于C#讀取txt文件數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • C#結(jié)合Minio實(shí)現(xiàn)文件上傳存儲(chǔ)與更新

    C#結(jié)合Minio實(shí)現(xiàn)文件上傳存儲(chǔ)與更新

    MinIO是一個(gè)開源的對(duì)象存儲(chǔ)服務(wù)器,專門設(shè)計(jì)用于在大規(guī)模數(shù)據(jù)存儲(chǔ)環(huán)境中運(yùn)行,這篇文章主要為大家介紹了C#如何結(jié)合Minio實(shí)現(xiàn)文件上傳存儲(chǔ)與更新,需要的可以參考下
    2024-03-03
  • C#獲取真實(shí)IP地址(IP轉(zhuǎn)為長(zhǎng)整形、判斷是否內(nèi)網(wǎng)IP的方法)

    C#獲取真實(shí)IP地址(IP轉(zhuǎn)為長(zhǎng)整形、判斷是否內(nèi)網(wǎng)IP的方法)

    這篇文章主要介紹了C#獲取真實(shí)IP地址的實(shí)現(xiàn)代碼,包含把IP轉(zhuǎn)為長(zhǎng)整形、判斷是否是私網(wǎng)、內(nèi)網(wǎng)IP的方法,需要的朋友可以參考下
    2014-08-08
  • C#將國(guó)產(chǎn)Linux視頻錄制生成mp4的具體實(shí)現(xiàn)

    C#將國(guó)產(chǎn)Linux視頻錄制生成mp4的具體實(shí)現(xiàn)

    這篇文章主要介紹了C#將國(guó)產(chǎn)Linux視頻錄制生成mp4的具體實(shí)現(xiàn),文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-08-08
  • 解決C#中Linq GroupBy 和OrderBy失效的方法

    解決C#中Linq GroupBy 和OrderBy失效的方法

    最近發(fā)現(xiàn)了一個(gè)問(wèn)題,在服務(wù)器端的Linq GroupBy 和OrderBy居然不管用,后來(lái)終于解決了所以現(xiàn)在分享給大家,有需要的朋友們可以參考借鑒。
    2016-09-09
  • C#設(shè)計(jì)模式之Visitor訪問(wèn)者模式解決長(zhǎng)隆歡樂(lè)世界問(wèn)題實(shí)例

    C#設(shè)計(jì)模式之Visitor訪問(wèn)者模式解決長(zhǎng)隆歡樂(lè)世界問(wèn)題實(shí)例

    這篇文章主要介紹了C#設(shè)計(jì)模式之Visitor訪問(wèn)者模式解決長(zhǎng)隆歡樂(lè)世界問(wèn)題,簡(jiǎn)單描述了訪問(wèn)者模式的定義并結(jié)合具體實(shí)例形式分析了C#使用訪問(wèn)者模式解決長(zhǎng)隆歡樂(lè)世界問(wèn)題的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • C# Double轉(zhuǎn)化為String時(shí)的保留位數(shù)及格式方式

    C# Double轉(zhuǎn)化為String時(shí)的保留位數(shù)及格式方式

    這篇文章主要介紹了C# Double轉(zhuǎn)化為String時(shí)的保留位數(shù)及格式方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C#實(shí)現(xiàn)桶排序算法的示例代碼

    C#實(shí)現(xiàn)桶排序算法的示例代碼

    桶排序是一種快速且高效的排序算法,通過(guò)將數(shù)據(jù)分配到有序桶中并分別排序,適合均勻分布數(shù)據(jù),它的時(shí)間復(fù)雜度為O(n),但不適合數(shù)據(jù)分布極不均勻或數(shù)據(jù)范圍很大的情況,桶排序算法簡(jiǎn)單、易實(shí)現(xiàn),可調(diào)整桶的大小和數(shù)量以適應(yīng)不同數(shù)據(jù),感興趣的可以了解一下
    2024-10-10
  • C#二進(jìn)制讀寫B(tài)inaryReader、BinaryWriter、BinaryFormatter

    C#二進(jìn)制讀寫B(tài)inaryReader、BinaryWriter、BinaryFormatter

    這篇文章介紹了C#二進(jìn)制讀寫B(tài)inaryReader、BinaryWriter、BinaryFormatter的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Unity3D基于UGUI實(shí)現(xiàn)虛擬搖桿

    Unity3D基于UGUI實(shí)現(xiàn)虛擬搖桿

    這篇文章主要為大家詳細(xì)介紹了Unity3D基于UGUI實(shí)現(xiàn)虛擬搖桿,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評(píng)論

鄂伦春自治旗| 华亭县| 禄劝| 普安县| 中阳县| 乌海市| 宁安市| 凉城县| 兴和县| 孙吴县| 寿宁县| 和林格尔县| 沙湾县| 高阳县| 威宁| 碌曲县| 高安市| 来安县| 诸城市| 北碚区| 东源县| 桐乡市| 涞源县| 宜兴市| 蒙山县| 晋城| 涪陵区| 会泽县| 湖北省| 大安市| 青阳县| 章丘市| 寻甸| 抚州市| 吴旗县| 大厂| 宁德市| 泰州市| 博爱县| 武城县| 山阳县|