2016-05-12 17 views
1

でいた場合、これはスクレーピング部分であるリストの比較:それは私がウェブサイトからデータを掻き落としているコンソールアプリケーションを持っているSQL表列

private static void getPageThumbLinks() 
{ 
    thumbUrlsList = new List<string>(); 
    HtmlWeb web = new HtmlWeb(); 
    web.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"; 
    foreach (string value in pageLinks) 
    { 

     HtmlDocument doc = web.Load("http://www.example.com/" + value); 
     foreach (HtmlNode nodes in doc.DocumentNode.SelectNodes("//td[@class='searchResultsSmallThumbnail']/a")) 
     { 
      HtmlAttribute href = nodes.Attributes["href"]; 
      var hreflink = href.Value; 
      thumbUrlsList.Add(hreflink); 
      //Console.WriteLine(hreflink); 
     } 
     compareToSql(); 
    } 
} 

私は、URLの収集、thumbUrlsListとMSSQLのリストを持っていますExpressテーブルTableと、linkという名前の列。

このリストとデータベースlinkの列を比較して、存在するかどうか確認できますか?

もしそうなら、私に例を挙げることができますか?
非常に高く評価されます。ありがとうございました。

+0

はい、可能です。 'pageLinks'とデータベース(リンク列)にアイテムの例がありますか? – Ian

答えて

2

すでにデータベースに存在するリンクのリストがdbListであるとします。

var dbList = new List<string>() { "Dave", "Steve", "Pete" }; 

とあなたの新しいthumbList

var thumbList = new List<string>() { "Dave", "Steve", "Pete", "Paul", "Mike" }; 

今、この

var newLinkList = thumbList.Except(dbList).ToList(); 
1

簡単な例を使用してデータベースに存在しないURLのリストを取得します。 LINQを使用して、存在するかどうかを調べることができます。

private static void getPageThumbLinks() 
{ 
    thumbUrlsList = new List<string>(); 
    HtmlWeb web = new HtmlWeb(); 
    web.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"; 
    foreach (string value in pageLinks) 
    { 

     HtmlDocument doc = web.Load("http://www.example.com/" + value); 
     foreach (HtmlNode nodes in doc.DocumentNode.SelectNodes("//td[@class='searchResultsSmallThumbnail']/a")) 
     { 
      HtmlAttribute href = nodes.Attributes["href"]; 
      var hreflink = href.Value; 
      thumbUrlsList.Add(hreflink); 
      //Console.WriteLine(hreflink); 

      // Here is where you check if the DataTable has the link 
      // Table is a DataTable containing the results of your query 
      var containsLink = Table.AsEnumerable().Any(row => link == row.Field<string>("link")); 

      if (containsLink) 
      { 
       // do something with it 
      } 
     } 
    } 
} 
関連する問題