private Coupon Spider(string url) { var spider = new SpiderClient(); var htmlContent = spider.LoadHtml(url); var content = Regex.Match(htmlContent, "<section class=\"bd\">[\\s\\S]*?</section>").Value; var coupon = new Coupon(); coupon.BaseUrl = url; var title = Regex.Match(content, "<div class=\"coupon-shop-title\">[\\s\\S]*?</div>").Value; title = Regex.Match(title, "<a href=[\\s\\S]*?</a>").Value; coupon.Url = Regex.Match(title, "\"[\\s\\S]*?\"").Value.Trim('"'); coupon.ShopName = Regex.Match(title, ">[\\s\\S]*[?<]").Value.Trim('<').Trim('>'); coupon.Title = Regex.Match(content, "<dt>[\\s\\S]*?</dt>").Value .Trim("<dt>".ToCharArray()).Trim("</dt>".ToCharArray()); coupon.RestCount = int.Parse(Regex .Match(content, "<span class=\"rest\">[\\s\\S]*?</span>") .Value .Trim("<span class=\"rest\">".ToCharArray()) .Trim("</span>".ToCharArray())); var matches = Regex.Matches(content, "<dd>[\\s\\S]*?</dd>"); coupon.Description = matches[1].Value.Trim("<dd>".ToCharArray()).Trim("</dd>".ToCharArray()); var dates = matches[2].Value .Trim("<dd>有效期:".ToCharArray()) .Trim("</dd>".ToCharArray()) .Split('至'); coupon.StartDate = DateTime.Parse(dates[0]); coupon.EndDate = DateTime.Parse(dates[1]); return(coupon); }
public async Task <Data> Search(string url, SearchCondition condition) { var paramsDirectory = new Dictionary <string, string> { { "q", condition.KeyWord }, { "startBiz30day", condition.StartBiz30day }, { "startTkRate", condition.StartTkRate }, { "endTkRate", condition.EndTkRate }, { "startPrice", condition.StartPrice }, { "endPrice", condition.EndPrice }, { "dpyhq", condition.dpyhq == "1"?"1&shopTag=dpyhq":"" }, //{ "freeShipment",condition.freeShipment?"1":""}, //{ "dxjh",condition.dxjh?"1":""}, //{ "hPayRate30",condition.hPayRate30?"1":""}, { "b2c", condition.b2c?"1":"" }, { "perPageSize", condition.PageSize.ToString() }, //最大100 { "toPage", condition.ToPage.ToString() }, //查看第几页内容 //佣金比例1%-10%:startTkRate=1&endTkRate=10 //价格100-200元:startPrice=100&endPrice=200 //月销售量1000以上:startBiz30day=1000 }; SortTypeKeyValue selectedKeyValue; if (condition.SpiderType == EnumSpiderType.Normal) { paramsDirectory.Add("freeShipment", condition.freeShipment ? "1" : ""); paramsDirectory.Add("dxjh", condition.dxjh ? "1" : ""); paramsDirectory.Add("hPayRate30", condition.hPayRate30 ? "1" : ""); selectedKeyValue = Core.BaseResources.Instance.NormalSortTypes .FirstOrDefault(item => item.Key == condition.SortTypeName); } else { paramsDirectory.Add("channel", "qqhd"); //高拥活动 //paramsDirectory.Add("sortType", ""); //排序 paramsDirectory.Add("userType", condition.userType.ToString()); //淘宝:0,天猫:1 paramsDirectory.Add("jpmj", condition.jpmj ? "1" : ""); //金牌卖家 selectedKeyValue = Core.BaseResources.Instance.HighCommissionSortTypes .FirstOrDefault(item => item.Key == condition.SortTypeName); } foreach (var item in selectedKeyValue?.Value) { if (!paramsDirectory.Keys.Contains(item.Key)) { paramsDirectory.Add(item.Key, item.Value); } } var paramsContent = string.Empty; foreach (var item in paramsDirectory) { if (!string.IsNullOrEmpty(item.Value)) { paramsContent += item.Key + "=" + item.Value + "&"; } } paramsContent = paramsContent.TrimEnd('&'); var spider = new SpiderClient(); var htmlContent = spider.LoadHtml(url + "?" + paramsContent); return(JsonConvert.DeserializeObject <Data>(htmlContent)); }