これは、リンクを取得するためのコードです。
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;
mainLinks.Add(href);
}
}
return mainLinks;
}
時々、取得しているリンクは「/」または:のように始まります。
"/ videos?feature=mh"または"//www.youtube.com/my_videos_upload"
「/」が適切なサイトを意味するのか、「/ videos?...」または「//www.youtube..。」で始まるサイトを意味するのかわかりません。
httpまたはhttpsで始まるWebサイトからのリンクを取得する必要があります。おそらく、wwwだけでも適切なサイトとしてカウントされます。問題は、私が適切なサイトアドレスとリンクとして定義するものとそうでないものです。
私のgetLinks関数が良くないことは確かですが、コードは適切な方法ではありません。
これは、リストにリンクを追加する方法です。
private List<string> test(string url, int levels , DoWorkEventArgs eve)
{
HtmlAgilityPack.HtmlDocument doc;
HtmlWeb hw = new HtmlWeb();
List<string> webSites;// = new List<string>();
List<string> csFiles = new List<string>();
try
{
doc = hw.Load(url);
webSites = getLinks(doc);
webSitesはリストです数回後、「/」または上記のように「//videos...」または「//www...」のようなリストサイトが表示されます。