コード例 #1
0
    // constructor
    // note: must specify which search type to use
    public WikipediaSearcher(ArticleCollection Webpages, string Start, string Finish, ForbiddenLinks l, string searchType)
    {
        StartPage  = Start;
        FinishPage = Finish;
        Articles   = Webpages;
        ForbiddenLinksCollection = l;

        // depth first
        if (searchType == "DFS")
        {
            watch.Start();
            SearchDFS();
            watch.Stop();
            Console.WriteLine(watch.ElapsedMilliseconds);
        }
        // breadth first
        else if (searchType == "BFS")
        {
            watch.Start();
            SearchBFS();
            watch.Stop();
            Console.WriteLine(watch.ElapsedMilliseconds + "ms");
        }
        else
        {
            Console.WriteLine("Please enter either DFS or BFS to indicate which search type you prefer.");
        }
    }
コード例 #2
0
 // constructor
 public WikipediaWebRequest(string requested_page, ArticleCollection Webpages, ForbiddenLinks l, Webpage parent)
 {
     ParentPage    = parent;
     RequestedPage = requested_page.Replace(' ', '_');
     if (!RequestedPage.Contains("wiki/"))
     {
         RequestedPage.Insert(0, "wiki/");
     }
     Articles = Webpages;
     ForbiddenLinkCollection = l;
     Controller();
 }
コード例 #3
0
ファイル: Program.cs プロジェクト: mgamlem3/Wikipedia-Race
        // used to run the program
        void Run() {
            // stores list of links not to search
            ForbiddenLinks ForbiddenLinksCollection = new ForbiddenLinks();
            // stores master list of webpages
            ArticleCollection Articles = new ArticleCollection(ForbiddenLinksCollection);
            bool StartExists;
            bool FinishExists;
            string StartPageName;
            string FinishPageName;
            
            // Ask for start page
            Console.WriteLine("Welcome\nWhich Wikipedia Page would you like to begin at?");
            StartPageName = Console.ReadLine();
            // StartPageName = "United States";
            StartPageName.Replace(' ', '_');

            // check if start page exists
            StartExists =  checkIfPageExists(StartPageName);

            // Ask for end page
            Console.WriteLine("Which Wikipedia Page would you like to end with?");
            FinishPageName = Console.ReadLine();
            // FinishPageName = "Federation";
            FinishPageName.Replace(' ', '_');
            
            // check if finish page exists
            FinishExists =  checkIfPageExists(FinishPageName);

            if (StartExists && FinishExists) {
                searchForWebsite(StartPageName, FinishPageName, Articles, ForbiddenLinksCollection);
            }
            else {
                Console.WriteLine("Unknown Error");
            }

            Console.WriteLine("Terminating Program");
        }
コード例 #4
0
 // constructor
 public ArticleCrawler(ArticleCollection c, ForbiddenLinks l)
 {
     Articles = c;
     ForbiddenLinksCollection = l;
 }
コード例 #5
0
ファイル: Program.cs プロジェクト: mgamlem3/Wikipedia-Race
        // search for the finishing website
        // inputs: strings for start and end, ArticleCollection to store webpages in, ForbiddenLinks object
        void searchForWebsite(string StartPageName, string FinishPageName, ArticleCollection Webpages, ForbiddenLinks Forbidden) {
            // get data for first webpage
            WikipediaWebRequest request = new WikipediaWebRequest("wiki/"+StartPageName, Webpages, Forbidden, null);          
            
            // successful request, start program
            if (request.SuccessfulWebRequest()) {
                WikipediaSearcher s = null;
                
                // create article crawler
                ArticleCrawler c = new ArticleCrawler(Webpages, Forbidden);
                Thread crawler = new Thread(() => c.Start());
                crawler.Start();
                crawler.Priority = ThreadPriority.Normal;

                // create searcher
                Console.WriteLine("Creating Searcher....");
                Thread searcher = new Thread(() => {s = new WikipediaSearcher(Webpages, StartPageName, FinishPageName, Forbidden, "BFS");});
                searcher.Start();
                searcher.Priority = ThreadPriority.AboveNormal;

                // wait for searcher to complete   
                searcher.Join();

                // try to stop crawler
                try {
                    crawler.Abort();
                }
                catch (PlatformNotSupportedException) {
                    // TODO: investigate this further
                    Console.WriteLine("System does not support abort of threads. Please terminate manually");
                }
            }
        }
コード例 #6
0
 // constructor
 public ArticleCollection(ForbiddenLinks l)
 {
     ForbiddenLinksCollection = l;
 }