之前一直用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;
}