Скачать весь сайт в C # - PullRequest
       50

Скачать весь сайт в C #

7 голосов
/ 19 января 2010

прости мое невежество по этому вопросу

Я использую

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

для загрузки веб-страницы. Не могли бы вы помочь мне с улучшением кода, чтобы он загружал весь сайт. Пробовал с помощью HTML Scraping, но он возвращает мне только ссылки href файлов index.html Как мне двигаться дальше

Спасибо

Ответы [ 2 ]

10 голосов
/ 19 января 2010

Очистка веб-сайта - это на самом деле много работы, с множеством угловых случаев.

Вместо этого вызовите wget . руководство объясняет, как использовать опции " рекурсивный поиск ".

9 голосов
/ 19 января 2010
 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;
    }

Это помещает веб-страницу в строку из предоставленного URL.

Затем вы можете использовать REGEX для разбора строки.

Этот маленький кусочек получает определенные ссылки из списка Craigslist и добавляет их в ArrayList ... Изменить для вашей цели.

 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;
    }
...