采集器概貌,如下:
最近做一個項目,功能類似于CNZZ站長統計功能,要求顯示Ip所在的省份市區/提供商等信息。網上的Ip純真數據庫,下載下來一看,發現沒提供商內容,省市區都很少,居然有XXX網吧,哥瞬間倒了。沒標準化、并且雜亂、還不連續的IP段、總體說來沒達到要求。
在百度上找啊找,找到淘寶Ip地址庫,官方介紹的相當誘人,準確率高,數據質量有保障,提供國家、省、市、縣、運營商全方位信息,信息維度廣,格式規范,但是限制每秒10次的訪問(這個比較無語)。
淘寶IP地址庫,提供API http://ip.taobao.com/
接口說明
1. 請求接口(GET):
http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]
2. 響應信息:
(json格式的)國家 、省(自治區或直轄市)、市(縣)、運營商
3. 返回數據格式:
{"code":0,"data":{"ip":"210.75.225.254","country":"/u4e2d/u56fd","area":"/u534e/u5317",
"region":"/u5317/u4eac/u5e02","city":"/u5317/u4eac/u5e02","county":"","isp":"/u7535/u4fe1",
"country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000",
"county_id":"-1","isp_id":"100017"}}
其中code的值的含義為,0:成功,1:失敗。
1 :IP轉換
準備好工具,后面就好弄啦, IPHelper提供了各種,IP<->byte[]<->Long 轉換
2 :多線程瘋狂獲取IP
3: Http請求的Json結果,并反序列化成對象
http請求這個相當簡單。網上一大把,這里主要說一下json序列化,在這里本人建議采用Newtonsoft.Json.dll 下載地址: http://json.codeplex.com/ 性能和兼容性達到最好
Http請求
}
}
Json序列化
private string _ip;
/// <summary>
/// IP地址
/// </summary>
public string ip
{
get { return _ip; }
set { _ip = value; }
}
private string _country;
/// <summary>
/// 國家
/// </summary>
public string country
{
get { return _country; }
set { _country = value; }
}
private string _country_id;
/// <summary>
/// 國家編號
/// </summary>
public string country_id
{
get { return _country_id; }
set { _country_id = value; }
}
private string _area;
/// <summary>
/// 地區
/// </summary>
public string area
{
get { return _area; }
set { _area = value; }
}
private string _area_id;
/// <summary>
/// 地區編號
/// </summary>
public string area_id
{
get { return _area_id; }
set { _area_id = value; }
}
private string _region;
/// <summary>
/// 區域
/// </summary>
public string region
{
get { return _region; }
set { _region = value; }
}
private string _region_id;
/// <summary>
/// 區域編號
/// </summary>
public string region_id
{
get { return _region_id; }
set { _region_id = value; }
}
private string _city;
/// <summary>
///城市
/// </summary>
public string city
{
get { return _city; }
set { _city = value; }
}
private string _city_id;
/// <summary>
/// 城市編號
/// </summary>
public string city_id
{
get { return _city_id; }
set { _city_id = value; }
}
private string _county;
/// <summary>
/// 縣
/// </summary>
public string county
{
get { return _county; }
set { _county = value; }
}
private string _county_id;
/// <summary>
/// 縣編號
/// </summary>
public string county_id
{
get { return _county_id; }
set { _county_id = value; }
}
private string _isp;
/// <summary>
/// 供應商
/// </summary>
public string isp
{
get { return _isp; }
set { _isp = value; }
}
private string _isp_id;
/// <summary>
/// 供應商ID
/// </summary>
public string isp_id
{
get { return _isp_id; }
set { _isp_id = value; }
}
}
/// <summary>
/// 淘寶api 返回的json數據
/// </summary>
public partial class TaobaoJsonData
{
public int code { get; set; }
public taobaoIPdata data { get; set; }
}
序列號對象taobaoIPdata
4:插入到數據庫中。。。剩下的自己隨便搞啦
源碼下載:淘寶IP獲取器.rar
新聞熱點
疑難解答