主题 从 新增爬取网站的前期观察及测试 变更为 适应论坛模式的爬虫
刚才用iteye论坛的两个版块 和 51cto的博客站点进行测试,爬虫都能正常爬取。 下午我再部署到服务器上,在测试数据库中多用几个论坛模式的站点和普通模式的站点进行长时间测试,看看还有什么问题
主题 从 51cto_blog测试 变更为 新增爬取网站的前期观察及测试
已经写好爬取配置文件的网站: ①51CTO_blog ②iteye_blog ③codeproject 以上网站在我电脑上测试是可以进行爬取的。 其它目前不适合爬取的网站: ①lupaworld:配置文件已经写好了,但是出现了上次报告中的问题。 ②linuxtone:是个论坛,内容是分模块的,没有分页,不适合咱们的爬虫。 ③phpChina:同上。 ④softpedia:软件板块初步看起来是分类型和系统的,选择好条件后,里面的东西是分页的;新闻版块是在一个页面可以一直往下拉,没有分页。 ⑤apache:项目是以一定顺序列出来的,所有项目都在一个页面,其页面url不符合咱们爬虫“前缀+数字+后缀”的规则。 另外两个站点Javaforge和GNA访问的时候太卡了,页面半天显示不出来,或者显示不完整,所以还没来得及看。 明天我会和抽取上述站点的负责人进行交流,看看是否有其它我没发现的可以爬取的入口。 另外三个可以爬取的站点列表页都只有20~30页,内容不是很多,可以等着和其他网站一起上线。
主题 从 爬取策略 变更为 51cto_blog测试
51cto_blog测试结果: 列表页爬虫完成了一次镜像爬取(30个列表页)和一次增量爬取(16个列表页) :15:58:06~16:11:21 耗时795秒,平均每条耗时17.3秒; 详细页爬虫共爬取了662页:15:58:18~19:53:09 耗时14091秒(中间随机休息了一次1838秒),平均每条耗时21.3秒 另:在写lupaworld对应的爬虫配置文件时发现了一个问题:html元素的一些属性值不固定,这对在列表页中抽取详细页url有影响。目前正在定位是其网站的原因,还是我们程序中设置动态User Agent,导致对方服务器根据不同UA返回不同的页面内容。
1.王老师说的间歇性的随机休息是可以设置的 2.这个数据是我在本机搭建了个很简单的网站,让爬虫爬取了一段时间,算的平均值。目前已经部署到服务器对51cto的博客进行测试。 3.这个问题我刚才也意识到了,列表页是不断更新的,里面的数据具有流动性,爬的太慢会有问题。 以上问题我明天会落实到代码中。
> starlee 写到: > 爬取策略已实现: > > 镜像爬取时:20秒~30秒发起一次请求,User Agent随机产生,请求时间间隔在该区间内随机产生; 镜像爬取同一个IP总是每20-30秒发送一次请求是否归于规律导致容易被人识别出来?中间是否可以增加随机随机时间的休眠,比如每爬1、2个小时(这一两个小时内的请求通过随机的10-20秒发一次请求)就随机休眠30分钟到2个小时? > 转换为增量爬取后:爬列表页时,每天扫描一次,扫描的范围需要人为的根据站点的更新频率来指定,爬虫把需要爬取的列表页平均到一天之内完成:比如一天要扫描前24页,就需要一个小时爬取一个,但是考虑到其他的消耗,为了保证能在一天之内完成任务,所以就设置在0.5小时~0.8小时之间随机产生一个时间值来爬取一个列表页; > 经本地测试:列表页 25.2秒爬一个;详细页30.6秒爬一个。 这个数据时如何算出来的? > 稍候我会部署到服务器上,找一个网站,在实际网络中测试一下上述参数有何变化。 > > 下一步: > 增量爬取后,如果详细页的爬取量也赶上来了,此时不再让其20秒~30秒爬一次,设置成和列表页一样,每天平均完成一定量的任务。 增量爬取的量比较少,列表页的爬取集中在一段时间内爬取完即可,即使爬60页,一分钟爬一页速度已经够慢了,一个小时也能做完,没必要分布到一整天来做。同时,爬完列表页后后续的详情页面的爬取同样要访问同一个网站,因此只要根据列表页和详情页的总量采用同一个策略合理安排、降低爬取频率即可,不用将列表页和详情页的爬取区分开分别设计策略来做
爬取策略已实现: 镜像爬取时:20秒~30秒发起一次请求,User Agent随机产生,请求时间间隔在该区间内随机产生; 转换为增量爬取后:爬列表页时,每天扫描一次,扫描的范围需要人为的根据站点的更新频率来指定,爬虫把需要爬取的列表页平均到一天之内完成:比如一天要扫描前24页,就需要一个小时爬取一个,但是考虑到其他的消耗,为了保证能在一天之内完成任务,所以就设置在0.5小时~0.8小时之间随机产生一个时间值来爬取一个列表页; 经本地测试:列表页 25.2秒爬一个;详细页30.6秒爬一个。 稍候我会部署到服务器上,找一个网站,在实际网络中测试一下上述参数有何变化。 下一步: 增量爬取后,如果详细页的爬取量也赶上来了,此时不再让其20秒~30秒爬一次,设置成和列表页一样,每天平均完成一定量的任务。