using Newtonsoft.Json;
using DaZhongDianPing.JsonBeans;
class JsonCrawler
{
private PhaseResultBean PhaseJson(Uri uri, String szResultPath, String szErrorPath)
{
PhaseResultBean result = new PhaseResultBean();
try
{
//取回网页
WebClient client = new WebClient();
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Byte[] pageData = client.DownloadData(uri);
string pageHtml = Encoding.UTF8.GetString(pageData);
JsonBeans.TopShopsBean topShops = JsonConvert.DeserializeObject<JsonBeans.TopShopsBean>(pageHtml);
//分析Json
int len = topShops.ShopBeans.Length;
result.total = len;
foreach (ShopBean shop in topShops.ShopBeans)
{
try
{
String szTitle = shop.FilterFullName;
if (szTitle != null) szTitle = szTitle.Replace("\r\n", "-");
String szStar = shop.ShopPowerTitle;
String szMeanPrice = shop.AvgPrice.ToString();
String szRegionName = shop.MainRegionName;
String szAddress = shop.Address;
if (szAddress != null) szAddress.Replace(",", "-");
String szTaste = shop.RefinedScore1;
String szEvn = shop.RefinedScore2;
String szService = shop.RefinedScore3;
//将获取的内容写入文本
using (StreamWriter sw = new StreamWriter(szResultPath, true))
{
sw.WriteLine(szTitle + "," + szStar + "," + szMeanPrice + "," + szRegionName + "," + szAddress + "," + szTaste + "," + szEvn + "," + szService);
}
result.successed += 1;
}
catch (Exception Ex)
{
using (StreamWriter sw = new StreamWriter(szErrorPath, true))
{
sw.WriteLine(Ex.Message);
}
result.failed += 1;
}
}
}
catch (WebException webEx)
{
using (StreamWriter sw = new StreamWriter(szErrorPath, true))
{
sw.WriteLine(webEx.Message);
}
result.bSuccess = false;
}
return result;
}
}
class PhaseResultBean
{
public Boolean bSuccess;
public int total;
public int successed;
public int failed;
}
public enum JsonEnginType
{
JsonEngin_Newtonsoft
}
internal class ShopBean
{
[JsonProperty("addDate")]
public string AddDate { get; set; }
[JsonProperty("addUser")]
public object AddUser { get; set; }
[JsonProperty("addUserName")]
public object AddUserName { get; set; }
[JsonProperty("address")]
public string Address { get; set; }
[JsonProperty("altName")]
public string AltName { get; set; }
[JsonProperty("avgPrice")]
public int AvgPrice { get; set; }
[JsonProperty("branchName")]
public string BranchName { get; set; }
[JsonProperty("branchTotal")]
public int BranchTotal { get; set; }
[JsonProperty("businessHours")]
public string BusinessHours { get; set; }
[JsonProperty("canSendSms")]
public object CanSendSms { get; set; }
[JsonProperty("categoryId")]
public int CategoryId { get; set; }
[JsonProperty("cityId")]
public int CityId { get; set; }
[JsonProperty("crossRoad")]
public string CrossRoad { get; set; }
[JsonProperty("defaultPic")]
public string DefaultPic { get; set; }
[JsonProperty("defaultPicBig")]
public object DefaultPicBig { get; set; }
[JsonProperty("dishTagList")]
public string[][] DishTagList { get; set; }
[JsonProperty("dishTags")]
public string DishTags { get; set; }
[JsonProperty("district")]
public int District { get; set; }
[JsonProperty("districtName")]
public object DistrictName { get; set; }
[JsonProperty("filterFullAdress")]
public string FilterFullAdress { get; set; }
[JsonProperty("filterFullName")]
public string FilterFullName { get; set; }
[JsonProperty("firstReviewId")]
public int FirstReviewId { get; set; }
[JsonProperty("firstUserFace")]
public object FirstUserFace { get; set; }
[JsonProperty("firstUserNickName")]
public object FirstUserNickName { get; set; }
[JsonProperty("fullAdress")]
public string FullAdress { get; set; }
[JsonProperty("fullName")]
public string FullName { get; set; }
[JsonProperty("glat")]
public object Glat { get; set; }
[JsonProperty("glng")]
public object Glng { get; set; }
[JsonProperty("groupFlag")]
public object GroupFlag { get; set; }
[JsonProperty("hasStaticMap")]
public object HasStaticMap { get; set; }
[JsonProperty("hits")]
public int Hits { get; set; }
[JsonProperty("isUserCanUpdate")]
public object IsUserCanUpdate { get; set; }
[JsonProperty("lastDate")]
public string LastDate { get; set; }
[JsonProperty("lastIp")]
public object LastIp { get; set; }
[JsonProperty("lastUser")]
public object LastUser { get; set; }
[JsonProperty("lastUserName")]
public object LastUserName { get; set; }
[JsonProperty("mainCategoryId")]
public int MainCategoryId { get; set; }
[JsonProperty("mainCategoryName")]
public object MainCategoryName { get; set; }
[JsonProperty("mainRegionId")]
public int MainRegionId { get; set; }
[JsonProperty("mainRegionName")]
public string MainRegionName { get; set; }
[JsonProperty("minUserMana")]
public object MinUserMana { get; set; }
[JsonProperty("monthlyHits")]
public int MonthlyHits { get; set; }
[JsonProperty("nearByTags")]
public object NearByTags { get; set; }
[JsonProperty("nearbyShops")]
public object NearbyShops { get; set; }
[JsonProperty("oldChainId")]
public object OldChainId { get; set; }
[JsonProperty("phoneNo")]
public string PhoneNo { get; set; }
[JsonProperty("phoneNo2")]
public string PhoneNo2 { get; set; }
[JsonProperty("picTotal")]
public int PicTotal { get; set; }
[JsonProperty("popularity")]
public int Popularity { get; set; }
[JsonProperty("power")]
public int Power { get; set; }
[JsonProperty("prevWeeklyHits")]
public object PrevWeeklyHits { get; set; }
[JsonProperty("priceInfo")]
public object PriceInfo { get; set; }
[JsonProperty("priceLevel")]
public int PriceLevel { get; set; }
[JsonProperty("primaryTag")]
public string PrimaryTag { get; set; }
[JsonProperty("promoId")]
public int PromoId { get; set; }
[JsonProperty("publicTransit")]
public string PublicTransit { get; set; }
[JsonProperty("refinedScore1")]
public string RefinedScore1 { get; set; }
[JsonProperty("refinedScore2")]
public string RefinedScore2 { get; set; }
[JsonProperty("refinedScore3")]
public string RefinedScore3 { get; set; }
[JsonProperty("regionId")]
public int RegionId { get; set; }
[JsonProperty("score")]
public int Score { get; set; }
[JsonProperty("score1")]
public int Score1 { get; set; }
[JsonProperty("score2")]
public int Score2 { get; set; }
[JsonProperty("score3")]
public int Score3 { get; set; }
[JsonProperty("score4")]
public int Score4 { get; set; }
[JsonProperty("searchKeyWord")]
public object SearchKeyWord { get; set; }
[JsonProperty("searchName")]
public object SearchName { get; set; }
[JsonProperty("shopGroupId")]
public int ShopGroupId { get; set; }
[JsonProperty("shopId")]
public int ShopId { get; set; }
[JsonProperty("shopName")]
public string ShopName { get; set; }
[JsonProperty("shopPower")]
public int ShopPower { get; set; }
[JsonProperty("shopPowerTitle")]
public string ShopPowerTitle { get; set; }
[JsonProperty("shopTagList")]
public string[][] ShopTagList { get; set; }
[JsonProperty("shopTags")]
public string ShopTags { get; set; }
[JsonProperty("shopTotalName")]
public string ShopTotalName { get; set; }
[JsonProperty("shopType")]
public int ShopType { get; set; }
[JsonProperty("similarShops")]
public object SimilarShops { get; set; }
[JsonProperty("suggestGA")]
public object SuggestGA { get; set; }
[JsonProperty("suggestReason")]
public object SuggestReason { get; set; }
[JsonProperty("todayHits")]
public object TodayHits { get; set; }
[JsonProperty("voteTotal")]
public int VoteTotal { get; set; }
[JsonProperty("webSite")]
public object WebSite { get; set; }
[JsonProperty("weeklyHits")]
public int WeeklyHits { get; set; }
[JsonProperty("wishTotal")]
public object WishTotal { get; set; }
[JsonProperty("writeUp")]
public string WriteUp { get; set; }
}
internal class TopShopsBean
{
[JsonProperty("categoryId")]
public int CategoryId { get; set; }
[JsonProperty("cityId")]
public int CityId { get; set; }
[JsonProperty("maxResults")]
public int MaxResults { get; set; }
[JsonProperty("rankType")]
public int RankType { get; set; }
[JsonProperty("shopBeans")]
public ShopBean[] ShopBeans { get; set; }
[JsonProperty("shopType")]
public int ShopType { get; set; }
[JsonProperty("skipResults")]
public int SkipResults { get; set; }
}