我试图保存一个网页,以便我可以离线查看。我想从网页上获取html,但我不知道如何获取所有图像。
这是我用来获取html的代码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(txtUrl.Text);
HttpWebResponse responce = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(responce.GetResponseStream());
string responsehtml = sr.ReadToEnd();
sr.Close();
string path = @"C:\Users\Cargoguide\Pictures\test\test.htm";
File.WriteAllText(path, responsehtml);
Process.Start(path);
您可以让winform的WebBrowser控件完成这些工作。解析网页后,您可以浏览Images元素以保存每个图像。
private void GetWebpage(string url)
{
WebBrowser browser = new WebBrowser();
browser.Navigate(url);
browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);
}
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var browser = (WebBrowser)sender;
var client = new WebClient();
foreach (var img in browser.Document.Images)
{
var image = img as HtmlElement;
var src = image.GetAttribute("src").TrimEnd('/');
if (!Uri.IsWellFormedUriString(src, UriKind.Absolute))
{
src = string.Concat(browser.Document.Url.AbsoluteUri, "/", src);
}
//Append any path to filename as needed
var filename = new string(src.Skip(src.LastIndexOf('/')+1).ToArray());
File.WriteAllBytes(filename, client.DownloadData(src));
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句