之前一直用python寫爬蟲,因工作需要使用C#,記錄一下,得到Json數據寫過爬蟲的應該都知道
public string GetResponse(string Url)
{
string ResponseData = string.Empty;
try
{
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(Url);
httpWebRequest.Timeout = 200000;
httpWebRequest.Method = "GET";
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream responseStream = httpWebResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
ResponseData = streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close();
}
catch (Exception)
{
ResponseData = null;
}
return ResponseData;
}
public string Get_detail()
{
string reponse = null;
string url = "https://***.json";
try
{
reponse = GetResponse(url);
}
catch (Exception)
{
reponse = string.Empty;
}
return reponse;
}
下面是用C#解析Json數據,很簡單,需要在vs中安裝Json包,在解決方案-引用上右鍵打開NuGet包管理,搜索Newtonsoft.Json並安裝即可使用
using Newtonsoft.Json.Linq;
public JArray Parse_data(string data)
{
//讀數組型json {"aaa":[{'a':'a1','b':'b1'},{'a':'a2','b':'b2'}]};
JObject jObject = JObject.Parse(data);
JArray data = (JArray)jObject["aaa"];
foreach (JObject item in data)
{
*** = item["a"]; //即可得到a1,a2,作後續使用,使用item["**"].ToString()可以轉爲string
//如果有其他來源的數據我想整合到Json的每一條數據中可以試用這個方法爲Jobject添加項
var newJsonObj = JObject.Parse("{\"項的名字\":\"" + 項的值 + "\",\"項2的名字\":\"" + 項2的值);
item.Add(newJsonObj.Properties());
}
//直接讀Json字符串
//JsonReader reader = new JsonTextReader(new StringReader(data));
//while (reader.Read())
//{
// Console.WriteLine(reader.Value + "\r\n");
//}
return jsonServers;
}