tangshangkui 发表于 2009-7-20 22:24:57

火车头采集数据太慢了 给点我个人的建议

我用火车头采集数据时太慢了,而且开始采集时电脑很卡,cpu100%。
根据我个人的编程经验,认为如下改进一下会好一些,
1.火车头采集时美次采集一条数据都会在窗口输出一句提示,这样会大量消耗电脑资源,建议给个选项关闭,或者每隔一段时间显示一个汇总信息,电脑处理显示是比较消耗资源的。我在我的程序里就遇到过。
2.火车头在采集时,每采集一条数据就写入数据库,以前慢说时acc数据库慢,2009版以后改用Sqlite以后一样慢的要死,8000个网页而已,4个小时只采集了800多个,Sqlite数据库的数据存储速度是比较快的,但是如果大量数据一条一条的存储的话会非常的慢,慢得惊人,如果改成每隔一段时间批量存储,(新建一个事务)Sqlite数据库批量存储时用事务方式会快很多,在我的程序你们差别在100被以上(与一条一条的存储)网上说原因是Sqlite数据库一条一条存储时会把时间全花在新建事务和提交事务上。虽然这样不能保证应电脑故障而导致的数据丢失,但是如果每隔几分钟存储一次(或者每多少条数据存储一次)以现在的电脑质量,是可以保证的,即使出了问题也只是丢失几分钟的数据。而速度应该可以大幅度提升。(如果用户不愿意可以给用户一个选项,部分用户是愿意快一点的)
3.火车头采集数据时获取html页面源码时应该用一个(或几个)专门的线程处理,这样火车头运行时假使的现象应该会好一点,获取html页面源码与网速有关,浏览器有时都会因此而导致电脑假死。

声明:以上纯属个人观点,部分原因纯属猜测,无论对错都是一番好意,谢绝任何非议!!!!!!!!!!! 谢谢

aven 发表于 2009-7-20 22:50:28

采集速度的快慢也不能完全归到火车上

你的网速,被采网站服务器的速度

采集规则中标签的个数,

标签中是不是用了大量的正则或(*)通配符

这几种条件都会制约采集的速度

一般采国内的站,只要不是跨网采集,一小时几千应该是很正常的

rq204 发表于 2009-7-20 23:26:28

1.输出应不用占用多大资源,你可以设置在任务运行完后关闭显示窗口.
2.sqlite用的是事务处理.免费版是没有事务处理功能的.
3.每个获取网页或任务都是新开的线程.
4.你几个小时采800条,这就有很问题,你要从其它方面来检查了.如果你一个页面循环几百次或更多,有可能很慢.

lbjyuer 发表于 2016-2-9 08:57:09

爪,以后学习下。。

spaooo 发表于 2023-7-2 15:00:10

我用火车头采集器往我的网站(zblog)上面发布内容的时候,笔记本电脑呼呼的响,键盘都烫了,底下的风扇呼呼的吹。:(
页: [1]
查看完整版本: 火车头采集数据太慢了 给点我个人的建议