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

mad*_*man -4 c#

我想下载存储在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 Agility Pack ......护目镜!他们什么都不做! (4认同)

Joe*_*orn 5

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

存储在html中的图像

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

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

要实现这一目标,请查看System.Net.WebClient()课程.它有一个.DownloadString()方法可以用来获取HTML.然后你需要找到所有的<img />标签.你在这里拥有自己的,但它足够直截了当.最后,使用WebClient .DownloadData()DownloadFile()方法检索图像.

  • 数据:image/png;base64 怎么样? (2认同)