我想抓取一个网页(新闻),只获得最新的链接。我有一个爬虫代码,从一个网站获得所有的链接,需要2-3个小时来获得大约30000个链接,并在数据库中存储。如果下次运行爬虫程序时,我只想插入新的链接,该怎么办?我知道我可以在插入数据库之前做一个过滤器,但我希望爬虫只抓取新的链接,而不是再次抓取旧链接(基本上是整个网站)。有没有可能做这样的事情?
发布于 2018-04-18 20:20:33
您需要某种类型的缓存。
我想到的一个解决方案是存储一个本地版本的网站。当您想要添加新链接时,您可以在新版本和本地存储的版本之间进行区分。之后你可以爬过diff..。
发布于 2018-04-18 20:21:39
这实际上是最好在数据库中处理的事情。在包含链接的列上放置一个唯一的键约束,当您转到insert时,DB将拒绝写入,并让您继续您的快乐之路。
您的SQL将如下所示:
CREATE TABLE `links` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`url` VARCHAR(1023) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `url_unique` (`url`)
);https://stackoverflow.com/questions/49899506
复制相似问题