自由与蓝天

昔日高山流水,快剑江湖,长街奔马。 今日谷歌百度,种菜发贴,写写代码。

博客园 首页 新随笔 联系 订阅 管理
1、 健壮性。网络不稳定,网页格式有问题,这些情况都是会发生的。当发生了这些情况是,爬虫不能抛出异常,而后退出,应该做适当的异常处理。
2、 使用多线程下载技术。否则,一个一个也没下载,使用单线程,在爬取页面上浪费的时间会非常之多。
3、持久化问题。包括页面下载的持久化,还有链接的持久化问题。可以分批下载,使用文件存储,或者使用数据库存储,使用sqlite应该会是 一个比较好的选择。
4、登陆需要Cookie的情形需要加以解决。如何发送完全自己定制的HTTP请求呢?
5、解决爬虫的队列保存问题。如果一次没有下载完,则下次可以接着下载。维护两个列表? 已完成列表和未完成列表?
6、代码重用问题。可以把一些通用的东西提取出来,放在一个类中。以什么方式组织最为合理?
7、调用一个带多线程执行的方法时,线程的同步有一些问题。本来想加锁或互斥量,但最终没有解决问题。现在的解决方法,是在那个多线程执行的方法中,先把所有的 线程创建好, 再统一启动,启动完毕后,循环使用join方法,这样只有当所有线程结束时,方法调用才会结束。(如果逐个来执行start, 再调用join方法,也出现过问题,最后,启动的是 第一个线程,而所有其他线程会在第一个线程退出后才进入,这样就不是并发执行了。。。why?)
8、并发粒度的控制。单个任务内并发。或者采用多任务并发,任务内部又有并发呢?
分布式并发? (这种分布式框架还没有开始搞。 最后甚至可以搞成P2P的爬取模型)
9、自适应并发。对一个 没有检测连接频率次数,或连接模式的网站来说。可以 自适应地调高下载并发数,取得最高的下载速度。 而对有下载检测的网站,则可以采用 保守下载策略。 如休眠时间的自适应调整。
10、可是考虑开始使用Jython, 以后在普通机子上,使用一个脚本就可以完成一切了。总体的部署文件很少。 而安装一个Python,需要的时间至少是 4M。
11、一些优秀爬虫框架的使用,如scrapy...
posted on 2012-11-08 13:58  自由与蓝天  阅读(404)  评论(2编辑  收藏  举报