2010-01-19 21 views
5

Perdona mi ignorancia sobre el temadescargar un sitio web completo en C#

estoy usando

string p="http://" + Textbox2.text; 
string r= textBox3.Text; 
System.Net.WebClient webclient=new 
System.Net.Webclient(); 
webclient.DownloadFile(p,r); 

para descargar una página web. ¿Puede ayudarme a mejorar el código para que descargue todo el sitio web? Intenté usar HTML Screen Scraping pero me devuelve solo los enlaces href de los archivos index.html. ¿Cómo procedo por delante

Gracias

+0

¿Ha resuelto su problema? – Jason

Respuesta

10

Raspar un sitio web es en realidad un montón de trabajo, con una gran cantidad de casos de esquina.

Invoque wget en su lugar. El manual explica cómo usar las opciones "recursive retrieval".

8
protected string GetWebString(string url) 
    { 
     string appURL = url; 
     HttpWebRequest wrWebRequest = WebRequest.Create(appURL) as HttpWebRequest; 
     HttpWebResponse hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse(); 

     StreamReader srResponseReader = new StreamReader(hwrWebResponse.GetResponseStream()); 
     string strResponseData = srResponseReader.ReadToEnd(); 
     srResponseReader.Close(); 
     return strResponseData; 
    } 

Esto pone la página web en una cadena de la URL proporcionada.

A continuación, puede utilizar REGEX para analizar a través de la cadena.

Esta pequeña pieza obtiene enlaces específicos de craigslist y los agrega a un arraylist ... Modifique su propósito.

protected ArrayList GetListings(int pages) 
    { 
      ArrayList list = new ArrayList(); 
      string page = GetWebString("http://albany.craigslist.org/bik/"); 

      MatchCollection listingMatches = Regex.Matches(page, "(<p><a href=\")(?<LINK>/.+/.+[.]html)(\">)(?<TITLE>.*)(-</a>)"); 
      foreach (Match m in listingMatches) 
      { 
       list.Add("http://albany.craigslist.org" + m.Groups["LINK"].Value.ToString()); 
      } 
      return list; 
    } 
+0

+1, también recuerde analizar todos los archivos de texto (html, css) ya que pueden tener enlaces a otros recursos –

Cuestiones relacionadas