Я просто загрузил 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));
}
Вы можете сделать это, используя 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
.
на основе их одного примера, но с модифицированным 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", "") );
}
}