程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 從網頁抓取數據的一般方法

從網頁抓取數據的一般方法

編輯:關於C#

首先要了解對方網頁的運行機制 ,這可以用httpwacth或者httplook來看一下http發送和接收的數據。這兩個工具應該說是比較簡單易懂的。這裡就不再介紹了。主要關注的內容是header和post的內容。一般會包括cookie,Referer頁面和其他一些亂其八糟可能看不懂的變量,還有就是正常交互的參數,比如需要post或者get的querystring所包含的東西。

httplook和httpwacth網上有很多下載的,這裡推薦使用httpwach,因為可以直接嵌入到ie中,個人覺得這個比較好用。這兩個工具可以到我上傳在csdn的資源中下載,地址為

http://download.csdn.net/user/jinjazz

這裡簡單給出一段可以抓取數據的c#代碼,比如登錄某個網站,獲取登錄成功後的html代碼,供數據分析使用。

private void login()
...{
System.Net.WebClient wb = new System.Net.WebClient();

System.Collections.Specialized.NameValueCollection header = new System.Collections.Specialized.NameValueCollection();
header.Add("Cookie", "czJ_cookietime=2592000; czJ_onlineusernum=1651; czJ_sid=w4bGJd");
header.Add("Referer", @"http://www.test_by_jinjazz.com.cn/bbs/login.php");
wb.Headers.Add(header);
System.Collections.Specialized.NameValueCollection data = new System.Collections.Specialized.NameValueCollection();
data.Add("formhash", "ebd2faac");
data.Add("referer", "http://www.test_by_jinjazz.com.cn/bbs/search.php");
data.Add("loginfield", "username");
data.Add("username", "jinjazz");
data.Add("password", "999");
data.Add("questionid", "0");
data.Add("answer", "");
data.Add("cookietime", "2592000");
data.Add("loginmode", "");
data.Add("styleid", "");
data.Add("loginsubmit", "提交");

byte[] b = wb.UploadValues("http://www.test_by_jinjazz.com.cn/bbs/login.php", "Post", data);
string strData = System.Text.Encoding.Default.GetString(b);
Console.WriteLine(strData);
}

以上代碼除了三個url之外其他數據都是真實的,其中header和data中的參數和值都是用httpwatch來監測後得到。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved