MiniCrawler: A skeletal Web crawler : Web Crawler « Network « C# / C Sharp

Home
C# / C Sharp
1.2D Graphics
2.Class Interface
3.Collections Data Structure
4.Components
5.Data Types
6.Database ADO.net
7.Date Time
8.Design Patterns
9.Development Class
10.Event
11.File Stream
12.Generics
13.GUI Windows Form
14.Internationalization I18N
15.Language Basics
16.LINQ
17.Network
18.Office
19.Reflection
20.Regular Expressions
21.Security
22.Services Event
23.Thread
24.Web Services
25.Windows
26.Windows Presentation Foundation
27.XML
28.XML LINQ
C# / C Sharp » Network » Web Crawler 




MiniCrawler: A skeletal Web crawler

/*
C#: The Complete Reference 
by Herbert Schildt 

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/


// MiniCrawler: A skeletal Web crawler. 
 
using System; 
using System.Net; 
using System.IO; 
 
public class MiniCrawler {  
 
  // Find a link in a content string. 
  static string FindLink(string htmlstr,  
                         ref int startloc) { 
    int i; 
    int start, end
    string uri = null
    string lowcasestr = htmlstr.ToLower()
 
    i = lowcasestr.IndexOf("href=\"http", startloc)
    if(i != -1) { 
      start = htmlstr.IndexOf('"', i1
      end = htmlstr.IndexOf('"', start)
      uri = htmlstr.Substring(start, end-start)
      startloc = end
    
             
    return uri; 
  
 
  public static void Main(string[] args) { 
    string link = null
    string str; 
    string answer; 
 
    int curloc; // holds current location in response 
 
    if(args.Length != 1) { 
      Console.WriteLine("Usage: MiniCrawler <uri>")
      return 
    
 
    string uristr = args[0]// holds current URI 
 
    try 
 
      do 
        Console.WriteLine("Linking to " + uristr)
 
        /* Create a WebRequest to the specified URI. */
        HttpWebRequest req = (HttpWebRequest
               WebRequest.Create(uristr)
 
        uristr = null// disallow further use of this URI 
 
        // Send that request and return the response. 
        HttpWebResponse resp = (HttpWebResponse
               req.GetResponse()
 
        // From the response, obtain an input stream. 
        Stream istrm = resp.GetResponseStream()
 
        // Wrap the input stream in a StreamReader. 
        StreamReader rdr = new StreamReader(istrm)
 
        // Read in the entire page. 
        str = rdr.ReadToEnd()
 
        curloc = 0
        
        do 
          // Find the next URI to link to. 
          link = FindLink(str, ref curloc)
 
          if(link != null) { 
            Console.WriteLine("Link found: " + link)
 
            Console.Write("Link, More, Quit?")
            answer = Console.ReadLine()
 
            if(string.Compare(answer, "L"true== 0) { 
              uristr = string.Copy(link)
              break
            else if(string.Compare(answer, "Q"true== 0) { 
              break
            else if(string.Compare(answer, "M"true== 0) { 
              Console.WriteLine("Searching for another link.")
            
          else 
            Console.WriteLine("No link found.")
            break
          
 
        while(link.Length > 0)
 
        // Close the Response. 
        resp.Close()
      while(uristr != null)
 
    catch(WebException exc) { 
      Console.WriteLine("Network Error: " + exc.Message +  
                        "\nStatus code: " + exc.Status)
    catch(ProtocolViolationException exc) { 
      Console.WriteLine("Protocol Error: " + exc.Message)
    catch(UriFormatException exc) { 
      Console.WriteLine("URI Format Error: " + exc.Message)
    catch(NotSupportedException exc) { 
      Console.WriteLine("Unknown Protocol: " + exc.Message)
    catch(IOException exc) { 
      Console.WriteLine("I/O Error: " + exc.Message)
    
 
    Console.WriteLine("Terminating MiniCrawler.")
  
}


           
       














Related examples in the same category
1.Set the BaseAddress for WebClient
2.Build the DownloadString
3.Download a web page in a thread
4.Output webpage content
5.Create GetResponse from WebRequest
6.Check the ContentType
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.