定制网络蜘蛛,现成的用Python写的开源项目scrapy,下载源代码,在Linux系统安装。然后就可以用了。
这个项目的架构不是怎么复杂,但作为Python的初学者,看到这个项目的这么多代码,彻底晕了。俗话说,万事开头难,确实,开始不知如何下手,如何定制符合自己需求的蜘蛛。只知道建立一个工程,但工程的各个模块的作用是什么,如何把这些模块组成一个整体,让它真正的发挥作用。
这些都是碰到的问题,好吧,找百度或Google,不过最好找Google,百度此时一点都给力。找啊找,零零星星找到一些东西,看了之后还是觉得一头雾水。仍然不能把各个模块有机地联系起来。
好吧,此时最笨的方法是去瞧瞧源代码,追踪程序的运行流程。搞了一天,彻底晕了,因为对Python语言不熟悉,加上这个项目的架构是事件驱动,还是蛮复杂的。就像以前看的那本MFC教程《深入浅出MFC》,那个架构,绕来绕去,勾来勾去。想起来的不免有些退缩。
期望从源代码理出架构,有机的整体,可以是可以,但得花时间。首先,我目的是用这个项目,暂时还不想了解这个项目是如何实现的。知道用就ok了。
我发现我暴殄天物,好好的使用文档不看,就去看源代码,岂不是舍近求?常常有个习惯,就是认为,与源码打包一起的这个文档没什么用处。因而对它常常不懈一顾,优先Google。但我发现我错了,彻底错了,我应该把Google放到一边,好好看这个项目的文档,因为,Google得到的东西大多出自项目的文档。这些文档一般都是英文写的,所以,最好学学英文,幸好,以前的英文学得还行,足以看懂文档。
最后,不管使用什么开源项目,第一个首先看文档。文档才是王道。。。。。。。。。。。。。
2013-5-17 23:26
递归抓取网站,抓取过的url写到数据库中。数据库用的是sqlite3,简单方便,随手可得。不用的时候出现这个问题:
sqlite3.OperationalError: database is locked
插入了几条数据,后面就频频出现数据库被锁的问题,Google了好久,终于找到答案了。原来,每次insert操作后就commit,不然到下次insert操作,可能会碰到前次insert时资源未释放的问题,再insert就报locked了