我想下载存储在html(网页)中的所有图像,我不知道将下载多少图像,我不想使用"HTML AGILITY PACK"
我在谷歌搜索,但所有网站让我更困惑,
我尝试了正则表达式,但只有一个结果...,
Jon*_*way 14
人们给你正确的答案 - 你也不能挑剔和懒惰.;-)
如果你使用半生不熟的解决方案,你将处理很多边缘情况.这是一个工作示例,它使用HTML Agility Pack获取HTML文档中的所有链接(它包含在HTML Agility Pack下载中).
这是一篇博客文章,展示了如何使用HTML Agility Pack和LINQ获取HTML文档中的所有图像
// 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);
}
Run Code Online (Sandbox Code Playgroud)
首先,我不能单独留下这句话:
存储在html中的图像
这句话可能是你的问题两次被投票的原因的一个重要原因.图像不存储在html中.Html页面引用了Web浏览器单独下载的图像.
这意味着您需要分三步完成:首先下载html,然后在html中找到图像引用,最后使用这些引用自行下载图像.
要实现这一目标,请查看System.Net.WebClient()课程.它有一个.DownloadString()方法可以用来获取HTML.然后你需要找到所有的<img />标签.你在这里拥有自己的,但它足够直截了当.最后,使用WebClient .DownloadData()或DownloadFile()方法检索图像.