我正在构建一个小型爬虫作为一个爱好项目。我所要做的就是抓取大约一百万个页面并将它们存储在数据库中。(是的,它会不时更新,但任何特定时间的条目将仅为100万)只是想知道这些东西是如何工作的。
我想在PHP/MySQL编码。我不希望有任何搜索功能,因为我没有服务器资源来提供。所有我想要的是,我应该能够运行一些SQL查询数据库上自己。
在数据库中,我不会存储任何页面文本(我想要存储在单独的文本文件-我不知道它是否可行)。只有标题,链接和一些其他信息将被存储。基本上,如果我运行一个查询,它会给我一些结果,我可以从这些文件中提取文本数据。
我想知道这个设计在接下来的环境中是否可行。
我将从Linode购买一个VPS (512 MB RAM)(我不能去专用服务器,共享主机不会让我这样做)。
我的问题:它是否能够维持这个大数据库(100万行),并能够在需要时以批处理模式运行查询。
欢迎提出任何建议。
从头开始编写网络爬虫是一项相当大的工作,至少如果您希望抓取数百万个页面的话。我从使用Heritrix网络爬虫的个人经验中了解到这一点。
阅读Heritrix开发人员指南中的"爬虫概述"一章可能会对您有所帮助。这一章涵盖了高级设计,应该可以帮助您了解爬虫的基本组件。
简单地说,这可以归结为"爬行状态"one_answers"处理"。抓取状态是你看过的url,你抓取过的url等等。而处理则涵盖了获取URL和后续处理以提取链接,保存下载的数据等。多个处理线程通常并行运行。
你也可以试试Scrapy。它很快,在Linode 512M服务器上运行良好,但它是用Python编写的。