Beispiel #1
0
        public void SubContentHandler()
        {
            var            spider      = new DefaultSpider("test", new Site());
            TestDownloader downloader1 = new TestDownloader
            {
                DownloadCompleteHandlers = new IDownloadCompleteHandler[]
                {
                    new SubContentHandler
                    {
                        Start = "a",
                        End   = "c"
                    }
                }
            };
            var  request1 = new Request("http://a.com/", 0, null);
            Page page     = downloader1.Download(request1, spider);

            Assert.Equal("aabbc", page.Content);

            downloader1 = new TestDownloader
            {
                DownloadCompleteHandlers = new IDownloadCompleteHandler[]
                {
                    new SubContentHandler
                    {
                        Start     = "a",
                        End       = "c",
                        EndOffset = 1
                    }
                }
            };

            page = downloader1.Download(request1, spider);
            Assert.Equal("aabb", page.Content);

            downloader1 = new TestDownloader
            {
                DownloadCompleteHandlers = new IDownloadCompleteHandler[]
                {
                    new SubContentHandler
                    {
                        Start       = "a",
                        End         = "c",
                        StartOffset = 1
                    }
                }
            };

            page = downloader1.Download(request1, spider);
            Assert.Equal("abbc", page.Content);

            downloader1 = new TestDownloader
            {
                DownloadCompleteHandlers = new IDownloadCompleteHandler[]
                {
                    new SubContentHandler
                    {
                        Start       = "a",
                        End         = "c",
                        StartOffset = 1,
                        EndOffset   = 1
                    }
                }
            };

            page = downloader1.Download(request1, spider);
            Assert.Equal("abb", page.Content);

            downloader1 = new TestDownloader
            {
                DownloadCompleteHandlers = new IDownloadCompleteHandler[]
                {
                    new SubContentHandler
                    {
                        Start       = "a",
                        End         = "c",
                        StartOffset = 10
                    }
                }
            };

            var downloader2 = downloader1;
            var exception   = Assert.Throws <SpiderException>(() =>
            {
                page = downloader2.Download(request1, spider);
            });

            Assert.Equal("Sub content failed. Please check your settings.", exception.Message);

            downloader1 = new TestDownloader
            {
                DownloadCompleteHandlers = new IDownloadCompleteHandler[]
                {
                    new SubContentHandler
                    {
                        Start     = "a",
                        End       = "c",
                        EndOffset = 20
                    }
                }
            };

            exception = Assert.Throws <SpiderException>(() =>
            {
                page = downloader1.Download(request1, spider);
            });
            Assert.Equal("Sub content failed. Please check your settings.", exception.Message);
        }