我刚刚下载了HTMLAgilityPack,文档中没有任何示例。
我正在寻找一种从网站上下载所有图片的方法。地址字符串,而不是物理图像。
<img src="blabalbalbal.jpeg" />
我需要提取每个img标记的源代码。我只是想感受一下这个库,以及它能提供什么。每个人都说这是最好的工具。
编辑
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));
}
发布于 2010-01-22 07:56:47
您可以使用LINQ完成此操作,如下所示:
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
了。
发布于 2010-01-22 08:04:45
基于他们的一个示例,但使用修改后的XPath:
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", "") );
}
我不知道这个扩展,所以我不确定如何将数组写到其他地方,但这至少可以让你得到你的数据。(而且,我确定我没有正确地定义数组。对不起)。
编辑
使用您的示例:
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", "") );
}
}
https://stackoverflow.com/questions/2113924
复制相似问题