摘要: 先不说爬虫里的基本原理,这里先讨论一下是如何管理站点的。原理如下:针对每一个网站,以网站的首页为名字,存为一个临时文件,这个文件里保存它里面的子页面,这样,当扫描过一个首页的子页面时,就会向这个文件里记录。当程序需要对比哪些文件扫描过时,只需要看看这个日志文件里面有没有需要扫描的子页面即可。当然这里还有一个问题,就是网页地址里的所有符号(比如/ : ?)并不能都存在于文件名里,要做一个简单的替换(这样看起来就像专业的临时文件啦!!!!)有一个问题困惑住了我:程序是要允许用户修改站点和关键字信息的,当程序在扫描的时候,会不断地访问这些文件,得到需要的数据,这是一个独立的线程,而当用户修改这些信息 阅读全文
posted @ 2012-10-27 21:47 byan 阅读(799) 评论(0) 推荐(0) 编辑
摘要: 应挚友之邀,给他写一个爬虫性质的程序,主要的功能是建立一个网站列表(主要是一些新闻网站),然后定期地去扫描这些主页面上包含的所有子页面,分析这些子页面上面是包含有设置过的关键字。PS:几天前天始写这个程序,虽然有个大致的结构,可是写出来之后发现有太多地方不统一,功能重叠。于是想起来软件工程思想的伟大,决定从界面写起。而且有一个好的地方,就是我写的程序已经分好模块,因而即使换一个方向来写,之前的工作也没有白费,很不错。这款软件考虑到给别人用的时候装环境的话比较麻烦,因此放弃使用Java,改用VS开发,下面介绍一下软件的大致流程。需要定义两个线程,管理线程AdminThread和爬虫线程。作用如下 阅读全文
posted @ 2012-10-27 14:03 byan 阅读(1817) 评论(0) 推荐(0) 编辑
摘要: f(n) = O( g(n) )表示在某个n之后, f(n)一直位于g(n)的下面,eg. 2n2=O( n2 ),也有n = O( n2 )f(n) = o( g(n) )表示f(n)比g(n)阶数低,且不相等,即 lim[ f(n)/g(n) ] = 0;f(n) = Θ( g(n) )表示在某个n之后,f(n)被限定在g(n)的范围内,即 c1g(n) ≤f(n) ≤c2g(n)f(n) = Ω( g(n) )表示在某个n之后,f(n)一直位于g(n)之上,可等阶也可高阶f(n) = ω( g(n) )表示f(n)比g(n)高阶且不等阶,即lim[ f(n)/g(n) ] =∞ 阅读全文
posted @ 2012-10-27 10:16 byan 阅读(236) 评论(0) 推荐(0) 编辑