2010-01-19 7 views
5

über das Thema meiner Unkenntnis Vergibeine ganze Website in C# herunterladen

Ich bin mit

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

eine Webseite zum Download bereit. Können Sie mir bitte helfen, den Code so zu verbessern, dass er die gesamte Website herunterlädt? Versucht, HTML Screen Scraping zu verwenden, aber es gibt mir nur die href-Links der index.html-Dateien zurück. Wie gehe ich vor

Dank

+0

Haben Sie Ihr Problem gelöst? – Jason

Antwort

10

eine Website Scraping ist eigentlich eine Menge Arbeit, mit vielen Eckfällen.

Rufen Sie stattdessen wget auf. Die manual erläutert die Verwendung der Optionen "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; 
    } 

Dadurch wird die Webseite in eine Zeichenfolge aus der angegebenen URL eingefügt.

Sie können dann REGEX verwenden, um die Zeichenfolge zu analysieren.

Dieses kleine Stück bekommt spezifische Links aus Craigslist und fügt sie zu einer Arraylist hinzu ... Ändern Sie Ihren Zweck.

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, denken Sie auch daran, alle Textdateien (html, css) zu analysieren, da sie Links zu anderen Ressourcen haben können –