【问题标题】:Get All Images From External URL / Website从外部 URL / 网站获取所有图像
【发布时间】:2014-01-24 18:27:25
【问题描述】:

这段代码运行良好...我没有问题。

var urls = from lnks in document.DocumentNode.Descendants()
  where (lnks.Name == "a" && lnks.Attributes["href"] != null &&
        (lnks.Attributes["href"].Value.ToString().Contains("jpg")
         || lnks.Attributes["href"].Value.ToString().Contains("png")
         || lnks.Attributes["href"].Value.ToString().Contains("bmp")
         || lnks.Attributes["href"].Value.ToString().Contains("jpeg")
         || lnks.Attributes["href"].Value.ToString().Contains("gif"))
        )
        select new
        {
         Url = lnks.Attributes["href"].Value
        };

但是这个总是返回null:

var urls = from lnks in document.DocumentNode.Descendants()
           where (lnks.Name == "a" || lnks.Name == "img") && 
                 (lnks.Attributes["href"] != null || lnks.Attributes["src"] != null) &&
                 (
                 lnks.Attributes["href"].Value.ToString().Contains("jpg")
                 || lnks.Attributes["href"].Value.ToString().Contains("png")
                 || lnks.Attributes["href"].Value.ToString().Contains("bmp")
                 || lnks.Attributes["href"].Value.ToString().Contains("jpeg")
                 || lnks.Attributes["href"].Value.ToString().Contains("gif")
                 || lnks.Attributes["src"].Value.ToString().Contains("jpg")
                 || lnks.Attributes["src"].Value.ToString().Contains("png")
                 || lnks.Attributes["src"].Value.ToString().Contains("bmp")
                 || lnks.Attributes["src"].Value.ToString().Contains("jpeg")
                 || lnks.Attributes["src"].Value.ToString().Contains("gif")
                 )
           select new
           {
            Url = lnks.Attributes["src"] != null ? lnks.Attributes["src"].Value : lnks.Attributes["href"].Value
           };

我的错误是什么?这是拍摄图像的正确方法吗?

【问题讨论】:

  • 你在一个查询中做了很多事情。把你的代码分成几块,你自己会发现你的错误。
  • 感谢英语课。我是新网站,我的英语很糟糕。过去 24 小时我没有睡觉,因此我找不到编辑按钮,也无法花太多时间找到它。我感到紧张。我会尽量写正确。其他代码仍然不起作用!

标签: asp.net image url external html-agility-pack


【解决方案1】:

这是图像节点的代码。用它做一个函数,你可以将它用于任何节点:

GetLinksFromDocument(document, nodeName, linkAttributeName)

using HtmlAgilityPack;

var urls = new List<string>();
var prefixList = new[] { "jpg", "jpeg", "png", "bmp", "gif" };
var document = new HtmlWeb().Load("http://jwillmer.de");

var imageNodes = document.DocumentNode.Descendants("img");  
var imageLinks = imageNodes.Where(node => node.Attributes.Contains("src"))
                           .Select(node => node.Attributes["src"].Value);

urls.AddRange(imageLinks.Where(link => prefixList.Any(link.EndsWith)));

【讨论】:

  • 感谢您的帮助。那个正在工作,但我的第一个代码也在工作。实际上,我使用的代码结构与那个非常相似。但我找不到 document.DocumnetNode.Descendants("img" || "a) 之类的东西。我需要使用 "a" -> "href" 和 "img" --> "src" 前缀会像你的...再次感谢。
  • 是的,我做到了。抱歉,我尝试投票但没有成功。我标记了。
猜你喜欢
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-21
相关资源
最近更新 更多