我想下载存储在html(网页)中的所有图片,我不知道将下载多少图像,我不想使用“HTML AGILITY PACK”
我在谷歌搜索,但所有网站让我更加困惑,
我试过正则表达式,但只有一个结果......,
答案 0 :(得分:14)
人们正在给你正确的答案 - 你也不能挑剔和懒惰。 ; - )
如果您使用半生不熟的解决方案,您将处理许多边缘情况。这是一个使用HTML Agility Pack获取HTML文档中所有链接的工作示例(它包含在HTML Agility Pack下载中)。
这是一篇博文,展示如何grab all images in an HTML document with HTML Agility Pack and LINQ
// Bing Image Result for Cat, First Page
string url = "http://www.bing.com/images/search?q=cat&go=&form=QB&qs=n";
// For speed of dev, I use a WebClient
WebClient client = new WebClient();
string html = client.DownloadString(url);
// Load the Html into the agility pack
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
// Now, using LINQ to get all Images
List<HtmlNode> imageNodes = null;
imageNodes = (from HtmlNode node in doc.DocumentNode.SelectNodes("//img")
where node.Name == "img"
&& node.Attributes["class"] != null
&& node.Attributes["class"].Value.StartsWith("img_")
select node).ToList();
foreach(HtmlNode node in imageNodes)
{
Console.WriteLine(node.Attributes["src"].Value);
}
答案 1 :(得分:5)
首先,我不能单独留下这句话:
存储在html中的图像
这句话可能是你的问题被投票两次的重要原因。图像不存储在html中。 Html页面引用了Web浏览器单独下载的图像。
这意味着您需要分三步完成:首先下载html,然后在html中找到图像引用,最后使用这些引用自行下载图像。
要完成此任务,请查看System.Net.WebClient()
课程。它有一个.DownloadString()
方法可以用来获取html。然后,您需要找到所有<img />
标记。你在这里拥有自己的,但它足够直截了当。最后,您使用WebClient的.DownloadData()
或DownloadFile()
方法来检索图像。
答案 2 :(得分:4)
您可以使用WebBrowser控件并从中提取HTML。
System.Windows.Forms.WebBrowser objWebBrowser = new System.Windows.Forms.WebBrowser();
objWebBrowser.Navigate(new Uri("your url of html document"));
System.Windows.Forms.HtmlDocument objDoc = objWebBrowser.Document;
System.Windows.Forms.HtmlElementCollection aColl = objDoc.All.GetElementsByName("IMG");
...
或直接调用IHTMLDocument
COM接口系列
答案 3 :(得分:2)
一般而言
也许这个关于C# HTML parser的问题会对你有所帮助。