2010-01-19 22 views
5

Wybacz moją ignorancję na tematpobrać całą stronę internetową w języku C#

Używam

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

pobrać stronę internetową. Czy możesz mi pomóc w ulepszeniu kodu, aby pobrać całą witrynę. Próbowałem za pomocą Skriningu ekranu HTML, ale zwracano mi tylko linki href z plików index.html. Jak postępować naprzód

Dzięki

+0

Czy problem został rozwiązany? – Jason

Odpowiedz

10

Skrobanie strony internetowej jest rzeczywiście dużo pracy, a wielu przypadkach narożnych.

Zamiast tego należy wywołać wget. W dokumencie manual wyjaśniono, jak korzystać z opcji "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; 
    } 

Spowoduje to wstawienie strony internetowej z napisem z podanego adresu URL.

Następnie można użyć parametru REGEX do przeanalizowania ciągu znaków.

Ten mały fragment otrzymuje konkretne odsyłacze poza craigslist i dodaje je do listy ... Zmodyfikuj do swojego celu.

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, pamiętaj też, aby parsować wszystkie pliki tekstowe (html, css), ponieważ mogą zawierać linki do innych zasobów –

Powiązane problemy