ウェブサイトのリンクから画像のリストを作成し、後で画像をハードディスクに保存/ダウンロードしたいと考えています。
これは、ウェブサイト/URLからリンクを取得する方法です:
private List<string> getLinks(HtmlAgilityPack.HtmlDocument document)
{
List<string> mainLinks = new List<string>();
var linkNodes = document.DocumentNode.SelectNodes("//a[@href]");
if (linkNodes != null)
{
foreach (HtmlNode link in linkNodes)
{
var href = link.Attributes["href"].Value;
if (href.StartsWith("http://") ==true || href.StartsWith("https://") ==true || href.StartsWith("www.") ==true) // filter for http
{
mainLinks.Add(href);
}
}
}
return mainLinks;
}
次に、このテスト関数で使用して、URL からのすべてのリンクのリストを作成します。
private List<string> test(string url, int levels, DoWorkEventArgs eve)
{
HtmlWeb hw = new HtmlWeb();
List<string> webSites;
try
{
doc = hw.Load(url);
webSites = getLinks(doc);
//retriveImages();
したがって、リストであるwebSitesには、メインのWebサイトのURLからのすべてのリンクが含まれます。たとえば、google.comの場合、webSitesには19個のアイテムがあり、それぞれがgoogle.comからのリンクです
そして retrieveImages() は次のとおりです。
private void retrieveImages()
{
var nodes = doc.DocumentNode.SelectNodes("//img");
foreach (var node in nodes)
{
List<string> images = new List<string>();
images.Add(node.Name);
}
}
そして retrieveImages() は確かに良いコードではなく、機能していません。それを使用して // を移動し、retrieveImages() を呼び出すと、何も起こりませんでした webSites リストは空です。
私がやりたいことは、retrieveImages() 関数で現在のサイト/リンクから画像のリストを作成し、作成したリストの画像をハードディスクにダウンロードすることです。