Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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));
        }