c#在html中查找图像并下载它们

我想下载存储在html(网页)中的所有图像,我不知道将下载多少图像,我不想使用“HTML AGILITY PACK”

我在谷歌搜索,但所有网站让我更困惑,

我试过正则表达式,但只有一个结果…,

人们给你正确的答案 – 你也不能挑剔和懒惰。 😉

如果你使用半生不熟的解决方案,你将处理很多边缘情况。 这是一个工作示例,它使用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 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); } 

首先,我不能单独留下这句话:

存储在html中的图像

这个短语可能是你的问题两次被投票的原因的一个重要原因。 图像存储在html中。 Html页面引用了Web浏览器单独下载的图像。

这意味着您需要分三步完成:首先下载html,然后在html中找到图像引用,最后使用这些引用自行下载图像。

要完成此任务,请查看System.Net.WebClient()类。 它有一个.DownloadString()方法,你可以用它来获取HTML。 然后你需要找到所有的标签。 你在这里拥有自己的,但它足够直截了当。 最后,使用WebClient的.DownloadData()DownloadFile()方法来检索图像。

您可以使用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接口系列

笼统

  1. 你需要获取html页面
  2. 搜索img标签并从中提取src =“…”部分
  3. 保留所有这些提取的图像url的列表。
  4. 一个一个下载它们。

也许这个关于C#HTML解析器的问题会对你有所帮助。