首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用HTML Agility Pack从网站检索所有图像?

如何使用HTML Agility Pack从网站检索所有图像?
EN

Stack Overflow用户
提问于 2010-01-22 07:53:01
回答 2查看 33.8K关注 0票数 25

我刚刚下载了HTMLAgilityPack,文档中没有任何示例。

我正在寻找一种从网站上下载所有图片的方法。地址字符串,而不是物理图像。

代码语言:javascript
复制
<img src="blabalbalbal.jpeg" />

我需要提取每个img标记的源代码。我只是想感受一下这个库,以及它能提供什么。每个人都说这是最好的工具。

编辑

代码语言:javascript
复制
public void GetAllImages()
    {
        WebClient x = new WebClient();
        string source = x.DownloadString(@"http://www.google.com");

        HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
        document.Load(source);

                         //I can't use the Descendants method. It doesn't appear.
        var ImageURLS = document.desc
                   .Select(e => e.GetAttributeValue("src", null))
                   .Where(s => !String.IsNullOrEmpty(s));        
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-22 07:56:47

您可以使用LINQ完成此操作,如下所示:

代码语言:javascript
复制
var document = new HtmlWeb().Load(url);
var urls = document.DocumentNode.Descendants("img")
                                .Select(e => e.GetAttributeValue("src", null))
                                .Where(s => !String.IsNullOrEmpty(s));

编辑:这段代码现在可以正常工作了;我忘了写document.DocumentNode了。

票数 45
EN

Stack Overflow用户

发布于 2010-01-22 08:04:45

基于他们的一个示例,但使用修改后的XPath:

代码语言:javascript
复制
 HtmlDocument doc = new HtmlDocument();
 List<string> image_links = new List<string>();
 doc.Load("file.htm");
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//img"))
 {
    image_links.Add( link.GetAttributeValue("src", "") );
 }

我不知道这个扩展,所以我不确定如何将数组写到其他地方,但这至少可以让你得到你的数据。(而且,我确定我没有正确地定义数组。对不起)。

编辑

使用您的示例:

代码语言:javascript
复制
public void GetAllImages()
    {
        WebClient x = new WebClient();
        string source = x.DownloadString(@"http://www.google.com");

        HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
        List<string> image_links = new List<string>();
        document.Load(source);

        foreach(HtmlNode link in document.DocumentElement.SelectNodes("//img"))
        {
          image_links.Add( link.GetAttributeValue("src", "") );
       }


    }
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2113924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档