本文共 1989 字,大约阅读时间需要 6 分钟。
说明百度服务器获取的Ip地址信息
对于国内的Ip地址返回省市和运营商
对于国外地址只返回国家名称,在线实例:
1.爬取信息来源:百度的IP地址查询数据
数据说明:
//请求地址// https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query=119.162.11.124&co=&resource_id=6006&t=1478145571872&ie=utf8&oe=gbk&cb=op_aladdin_callback&format=json&tn=baidu&cb=jQuery110204481323950024978_1478145442947&_=1478145442951//相应内容// jQuery110204481323950024978_1478145442947({ "status":"0","t":"1478145571872","set_cache_time":"","data":[{"location":"山东省济南市 联通", "titlecont":"IP地址查询", "origip":"119.162.11.124", "origipquery":"119.162.11.124", "showlamp":"1", "showLikeShare":1, "shareImage":1, "ExtendedLocation":"", "OriginQuery":"119.162.11.124", "tplt":"ip", "resourceid":"6006", "fetchkey":"119.162.11.124", "appinfo":"", "role_id":0, "disp_type":0}]});解析实例代码:
string ip = "119.162.11.124"; //山东省济南市 联通//string ip = "118.184.180.46"; //江苏省常州市 电信//string ip = "192.30.253.113"; //美国string url = string.Format(" https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query={0}&co=&resource_id=6006&t=1478145571872&ie=utf8&oe=gbk&cb=op_aladdin_callback&format=json&tn=baidu&cb=jQuery110204481323950024978_1478145442947&_=1478145442951", ip);//获取返回内容HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);req.Method = "GET";HttpWebResponse resp = (HttpWebResponse)req.GetResponse();Stream stream = resp.GetResponseStream();string result = "";//注意,此处使用的编码是:gb2312//using (StreamReader reader = new StreamReader(stream, Encoding.Default))using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("gb2312"))){ result = reader.ReadToEnd();}//去除json的函数名称int start = result.IndexOf("{");int end = result.LastIndexOf("}");string temp = result.Substring(start, end - start + 1);Console.WriteLine(temp);//解析Json结果JObject obj = JObject.Parse(temp);JArray data = obj["data"] as JArray;if (data != null){ JObject dataObj = data[0] as JObject; Console.WriteLine(dataObj["location"]);}编码说明:
//win10,中文版,默认的编码是gb2312Console.WriteLine(Encoding.Default.BodyName);//gb2312