C#中網路編程,針對某個網站,循環獲取特定內容,需不需要分析網路數據,構造數據包,再進行編程?還是類似資料庫,可以有固定指令,可以通過程序發送給網站?例如:該網站提供輸入手機號,可以查詢該手機號相關信息的功能,並在頁面顯示,目前我有一堆手機號碼,想獲取這些號碼的歸屬地信息,並存入本地,怎麼通過C#編程實現,運行程序即可獲取相關信息,而無需打開網頁,一個接一個輸入號碼查詢。思想,實現或資料都可。


主要就用HttpWebRequest類,注意method應該是post。具體的post內容(request body)可以通過瀏覽器F12模式查看,包括其他的request header也可以這麼查。拿到response body後就當普通字元串處理也可以,裡面就有你要的東西。

如果網站需要事先登錄就會麻煩點。


你的需求其實是,如何獲取網頁的數據....這是一個爬蟲問題。用http請求去獲取網頁html,保存到本地之後去截取字元串或者用正則表達式去獲取你的數據就ok了。隨手百度搜了一段代碼:

/// &

/// 獲取網頁HTML源碼
/// &
/// &

鏈接 eg:http://www.baidu.com/ & /// &

編碼 eg:Encoding.UTF8& /// &HTML源碼&
public static string GetHtmlSource(string url, Encoding charset)
{
string _html = string.Empty;
try
{
HttpWebRequest _request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse _response = (HttpWebResponse)_request.GetResponse();
using (Stream _stream = _response.GetResponseStream())
{
using (StreamReader _reader = new StreamReader(_stream, charset))
{
_html = _reader.ReadToEnd();
}
}
}
catch (WebException ex)
{
using (StreamReader sr = new StreamReader(ex.Response.GetResponseStream()))
{
_html = sr.ReadToEnd();
}
}
catch (Exception ex)
{
_html = ex.Message;
}
return _html;
}


利用網站的API或者直接post頁面。網頁就是HTML,文本,不需要特別解析。
.net framework裏就有解析HTML的庫,不過不算特別好用就是了

分兩種:

1:目標網站數據為頁面直接綁定

get獲取html 通過解析html獲取自己需要的內容(可以只截取自己需要的部分html)

2:目標網站數據為ajax動態綁定

可以使用谷歌或UC 360等瀏覽器(谷歌內核)自帶抓包工具(NetWork)抓包獲取介面url以及參數cookies等,下來模擬post提交數據即可得到返回的json或者XML,然後解析即可.

用webbrowser載入網頁,獲取其中的document對象,查找需要填寫手機號輸入框的htmlelement,然後模擬點擊,根據返回的網頁再次獲取document對象和相應的htmlement,從而獲取相應的數據。如此循環,即可獲取你要的數據。


分析包(Httpwatch pro)

構造包

發送接收分析存儲
目測題主需要的是解析HTML,Nsoup拿好不謝。

WebClient或者HttpWebRequest都可以獲取到html頁面內容,https://htmlagilitypack.codeplex.com/

這個庫可以很輕易的獲取到你要的內容。
Html Agility Pack需要分析是肯定的,可以瞭解這個組件
推薦閱讀:
相關文章