Ser*_*pia 21 c# parsing html-agility-pack
我刚刚下载了HTMLAgilityPack,文档中没有任何示例.
我正在寻找一种从网站下载所有图像的方法.地址字符串,而不是物理图像.
<img src="blabalbalbal.jpeg" />
Run Code Online (Sandbox Code Playgroud)
我需要拉出每个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));
}
Run Code Online (Sandbox Code Playgroud)
SLa*_*aks 38
您可以使用LINQ执行此操作,如下所示:
var document = new HtmlWeb().Load(url);
var urls = document.DocumentNode.Descendants("img")
.Select(e => e.GetAttributeValue("src", null))
.Where(s => !String.IsNullOrEmpty(s));
Run Code Online (Sandbox Code Playgroud)
编辑:此代码现在实际工作; 我忘记写了document.DocumentNode
.
基于他们的一个例子,但是修改了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", "") );
}
Run Code Online (Sandbox Code Playgroud)
我不知道这个扩展,所以我不确定如何将数组写出到其他地方,但这至少可以为您提供数据.(另外,我没有正确定义数组,我很确定.抱歉).
使用你的例子:
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", "") );
}
}
Run Code Online (Sandbox Code Playgroud)