我有一个从网站上抓取数据的控制台应用程序,这是抓取部分:
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
和一个名为Table
的MSSQL Express表,其中包含一个名为link
的列。
是否可以将此列表与数据库link
列进行比较,并检查它是否存在?
如果是的话,你能举个例子吗? 非常感谢。谢谢。
答案 0 :(得分:2)
假设您有一个已存在于数据库中的链接列表是dbList。
var dbList = new List<string>() { "Dave", "Steve", "Pete" };
和你的新thumbList
var thumbList = new List<string>() { "Dave", "Steve", "Pete", "Paul", "Mike" };
现在要获取数据库中不存在的URL列表,请使用此
var newLinkList = thumbList.Except(dbList).ToList();
答案 1 :(得分:1)
一个简单的例子。您可以使用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
}
}
}
}