我正在为我自己的网站编写一个小的网络爬虫。它似乎工作正常。我浏览了每个链接并检查它是否属于我的主页。如果找到链接,它会使用“addSite()”添加站点。这首先尝试获取 URl 相同的条目,如果没有任何条目,则添加 URl。否则,如果内容哈希更改,它会更新它。问题是它会添加 URl,即使它存在。
这是我的方法:
private bool addSite(string url, string title, string content)
{
string hash = md5Hash(content);
List<object[]> res = sql.executeReader(string.Format("SELECT `hash` FROM `sites` WHERE `url` = '{0}'", MySqlHelper.EscapeString(url)));
if (res.Count > 0)
{
if (res[0][0].ToString() != hash)
{
sql.executeQuery(string.Format("UPDATE `sites` SET title = '{0}', content = '{1}', hash = '{2}' WHERE url = '{3}'", MySqlHelper.EscapeString(title), MySqlHelper.EscapeString(content), hash, MySqlHelper.EscapeString(url)));
return true;
}
return false;
}
sql.executeQuery(string.Format("INSERT INTO `sites`(url, title, hash, content) VALUES('{0}', '{1}', '{2}', '{3}')", MySqlHelper.EscapeString(url), MySqlHelper.EscapeString(title), hash, MySqlHelper.EscapeString(content)));
Console.WriteLine("Added: " + url);
return true;
}
我希望任何人都能找到失败。非常感谢。