Exemplo n.º 1
0
        public IGoodsFetcherMetadata GetMetadata(IGoodsFetcher fetcher)
        {
            var choosen = FetcherCollection.SingleOrDefault(x => x.Value == fetcher);

            if (choosen == null)
            {
                return(null);
            }
            return(choosen.Metadata);
        }
Exemplo n.º 2
0
 private static void OnGoodsFetched(IGoodsFetcher fetcher, Goods goods)
 {
     Console.WriteLine(String.Format("{0} 返回的结果:", GoodsFetcherManager.Instance.GetMetadata(fetcher).Name));
     Console.WriteLine("标题: " + goods.Title);
     Console.WriteLine("价格: " + goods.Price);
     Console.WriteLine("信誉: " + goods.SellerCredit);
     Console.WriteLine("销量: " + goods.SellAmount);
     Console.WriteLine("图片: " + goods.ImagePath);
     if (goods.Properties != null)
     {
         foreach (var property in goods.Properties.OfType <StringProperty>())
         {
             Console.WriteLine(String.Format(" - {0}: {1}", property.Name, property.Value));
         }
     }
 }
Exemplo n.º 3
0
        private static void GetKeywordAndSearch(IGoodsFetcher testFetcher, string fetcherName)
        {
            if (testFetcher == null)
            {
                return;
            }
            Console.Write(String.Format("[{0}] 请输入要测试的关键字(输入End结束):", fetcherName));
            string keyword;

            while ((keyword = Console.ReadLine()).ToUpper() != "END")
            {
                Console.Write("输入搜索结果数量上限:");
                string limit = Console.ReadLine();
                Console.Write("获得搜索列表中...");
                var list = testFetcher.GetGoodsUriByKeyowrd(keyword, Convert.ToInt32(limit));
                Console.WriteLine(list.Count() + "结果");
                foreach (var uri in list)
                {
                    Console.WriteLine();
                    Console.WriteLine("--------------------------------------------------------------------------------");
                    Console.WriteLine("抓取 " + uri + " ...");
                    Console.WriteLine("--------------------------------------------------------------------------------");
                    bool fetchAgain = true;
                    while (fetchAgain)
                    {
                        try
                        {
                            Goods goods = testFetcher.FetchGoods(uri);
                            OnGoodsFetched(testFetcher, goods);
                            fetchAgain = false;
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("---------------发生异常!" + ex.Message + "---------------");
                            Console.WriteLine("敲回车继续,输入R敲回车重抓此商品");
                            string input = Console.ReadLine();
                            if (input == "R" || input == "r")
                            {
                                fetchAgain = true;
                            }
                        }
                    }
                }
                Console.WriteLine();
                Console.WriteLine(String.Format("[{0}] 请输入要测试的关键字(输入End结束):", fetcherName));
            }
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            foreach (var fetcher in GoodsFetcherManager.Instance.GetAllFetcher())
            {
                Console.WriteLine("加载商家:" + GoodsFetcherManager.Instance.GetMetadata(fetcher).Name);
            }
            Console.WriteLine();

            IGoodsFetcher testFetcher = null;

            while (true)
            {
                Console.WriteLine("请输入要测试的商家(输入End结束):");
                string fetcherName = Console.ReadLine();
                if (fetcherName.ToUpper() == "END")
                {
                    break;
                }
                testFetcher = GoodsFetcherManager.Instance.GetFetcher(fetcherName);

                GetKeywordAndSearch(testFetcher, fetcherName);
                Console.WriteLine();
            }
        }
Exemplo n.º 5
0
 public FetchJob(Job creator, IGoodsFetcher fetcher, Uri uri)
     : base(creator)
 {
     this.Fetcher = fetcher;
     this.Uri     = uri;
 }