Asp.net 从外部URL/网站获取所有图像

Asp.net 从外部URL/网站获取所有图像,asp.net,image,url,external,html-agility-pack,Asp.net,Image,Url,External,Html Agility Pack,这个代码运行得很好。。。我没有问题 var urls = from lnks in document.DocumentNode.Descendants() where (lnks.Name == "a" && lnks.Attributes["href"] != null && (lnks.Attributes["href"].Value.ToString().Contains("jpg") || lnks.Attribute

这个代码运行得很好。。。我没有问题

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
           };

我犯了什么错?这是拍照的正确方法吗

这是图像节点的代码。利用它创建一个函数,您可以将其用于任何节点:

GetLinksFromDocument(文档、节点名、链接属性名)

使用HtmlAgilityPack;
var url=新列表();
var prefixList=new[]{“jpg”、“jpeg”、“png”、“bmp”、“gif”};
var document=new HtmlWeb().Load(“http://jwillmer.de");
var imageNodes=document.DocumentNode.substands(“img”);
var imageLinks=imageNodes.Where(node=>node.Attributes.Contains(“src”))
.Select(node=>node.Attributes[“src”].Value);
AddRange(imageLinks.Where(link=>prefixList.Any(link.EndsWith));

这是图像节点的代码。利用它创建一个函数,您可以将其用于任何节点:

GetLinksFromDocument(文档、节点名、链接属性名)

使用HtmlAgilityPack;
var url=新列表();
var prefixList=new[]{“jpg”、“jpeg”、“png”、“bmp”、“gif”};
var document=new HtmlWeb().Load(“http://jwillmer.de");
var imageNodes=document.DocumentNode.substands(“img”);
var imageLinks=imageNodes.Where(node=>node.Attributes.Contains(“src”))
.Select(node=>node.Attributes[“src”].Value);
AddRange(imageLinks.Where(link=>prefixList.Any(link.EndsWith));

您在一个查询中做了很多事情。把你的代码分成几部分,你会发现你自己的错误。我是新来的,我的英语很糟糕。在过去的24小时里,我没有睡觉,所以我找不到编辑按钮,也没法花这么多时间来找到它。我感到紧张。我会尽量写对的。另一方面,代码仍然不起作用!!您在一个查询中做了很多事情。把你的代码分成几部分,你会发现你自己的错误。我是新来的,我的英语很糟糕。在过去的24小时里,我没有睡觉,所以我找不到编辑按钮,也没法花这么多时间来找到它。我感到紧张。我会尽量写对的。另一方面,代码仍然不起作用!!谢谢你的帮助。这一个正在工作,但我的第一个代码也在工作。事实上,我使用的代码结构和那个非常相似。但是我找不到document.DocumnetNode.substands(“img”| |“a”)之类的东西。我需要使用“a”->“href”和“img”->“src”“前缀将和你的一样。。。再次感谢。是的,我做到了。对不起,我试着投赞成票,但没有成功。我做了标记。谢谢你的帮助。这一个正在工作,但我的第一个代码也在工作。事实上,我使用的代码结构和那个非常相似。但是我找不到document.DocumnetNode.subjections(“img”| |“a”)之类的东西。我需要使用“a”->“href”和“img”->“src”,前缀将与您的一样…再次感谢。是的,我这样做了。很抱歉,我尝试投票,但没有成功。我标记了。
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)));