Soukey蜘蛛是采用socket来下载网页源码的。Socket 请求发送采用的是ASCII,接收的时候采用的是默认的编码,查看了一下是gb2312,这个过程中如果网页是gb2312 时,对中文是可以解析出来的,如果是UTF8会出现部分乱码。如果接受也采用ASCII,则无论GB2312或UTF8都会出现乱码。 查了一些资料,在socket send与receive需要使用相同的编码。即如果是UTF8的页面则需要用utf8格式,测试通过。 但此种方式都需要在正式探测页面时首先获取网页的编码(或直接由用户子指定),对Soukey蜘蛛而言并不是最好的方式,所以,此问题暂不进行... [更多...]

Posted in:   Tags: , ,
一孑 posted on 五月 14, 2009 07:03
最近会比较忙,所以soukey爬虫的性能优化可能会慢一些。先发一版源代码,希望可以和大家在此方面进行交流。 此版本是《爬虫程序 性能的考虑》中所谈到的第一种算法制作的,也是在codeproject上的那个例子上进行的修改,但也有很多的不同。实际这版代码中还有很多地方可以进行优化,只是最近真的是有点忙。还有一版程序源码,是《爬虫程序 性能的考虑》中的第二种算法,但此版bug较多,还需调试,完成后会发布,可以做一个比较。 这个版本提供了后台线程的监控功能,可以看到后台线程的工作状态和每个线程的所耗时间,广开思路进行优化,有好的建议也可以发给我。 同时这个版本... [更多...]

Posted in:   Tags:
一孑 posted on 四月 28, 2009 04:09
前面谈到了,做一个爬虫程序并不复杂,如果是做一个单线程的爬虫程序,可能一天就可以完成。但性能极低。所以,需要考虑多线程的问题。一旦引入多线程,很多问题都需要重新设计,最近一直在做soukey爬虫,反复测试一些内容,颇有些感触,在此做个记录。 多线程算法:上一篇文章谈到了,我们采用广度优先的算法。这个时候就需要考虑线程的分配算法了:我测试了两种: 1、如果设定30个线程,则任务启动就开30个线程去执行任务,任务信息通过一个队列来完成,所以30个线程就是不断的去读取一个队列,执行任务;这是第一种算法,看到网上的一些列子也都是采用此算法,同时codeproject上提供了一个... [更多...]

Posted in:   Tags: ,
一孑 posted on 四月 21, 2009 07:10
正在给Soukey采摘增加一个爬虫的功能,作为一个任务放到soukey采摘中,这样指定一个入口地址即可将所需的采集的信息采集出来,类似搜索引擎的做法。本以为做一个简单的爬虫程序不是很难,但在编写的时候才发现要想做好,确实有难度。 在此整理了一些,仅供参考: 1、算法:是采用广度优先还是深度优先,从算法考虑,广度优先性能高且算法简单; 2、网址解析:网址解析相对比较容易,但需要考虑是否进行外部网址的探测,如果进行外部网址探测,则就开始了一个蜘蛛网的爬行了; 3、探测网址深度设定:通常情况是所有的网址都可以探测到,只要深度足够,且网站链接做的足够好; ... [更多...]

Posted in:   Tags:

Blog Roll

    最新评论

    一孑工作室声明
    本站文章均为原创,如果转载请注明出处。

    © Copyright 2010『一孑工作室』
    管理我的网站
    京ICP备10018014号