我的需求很简单,我想从数据库读出url网页地址,读取过的不能再读,然后抓取网页源码,抓取完然后再存回去,url记录大约有十万
条,请问各位高手,我应该怎么样做呢?我的思路是开一个线程,读过的再把它一个字段如isReaded修改为1,再开几个线程去抓取。但问
题是:怎么样读取数据好呢,不能一下就读十万吧。读出来数据怎么放让另外的线程去读的?刚才试了下,一边读一边更新isReaded字
段,读取3000条时就报Network error IOException: Address already in use: connect 异常,也不知道是什么原因。还有怎么样才能做
到多线程插入数据
[b]问题补充:[/b]
谢谢两位的回答,还有几个疑问
to ranLoD: "一个标识对象,当入库的线程读取到标识对象的时候线程结束" 一个标识对象是什么意思,怎么样读取标识对象,能否写出几句简单的代码
to pwg17:"读取的线程读一批URL出来后,更新这批URL",怎么样做到呢,怎么控制数量,怎么更新呢,能否写出几句简单的代码
[b]问题补充:[/b]
因为还有程序不断往数据库里插入新数据,一开始读完十万可以,但还是有一个线程定时扫描数据吧?
[b]问题补充:[/b]
谢谢pwg17的一直回答。是的,是写一个爬虫。因为分析抓取时,是用别的语言写的,不保存在数据库里没法进行交互啊
[b]问题补充:[/b]
是的,我只是负责下载页面,其他分析不是我管。这几天看别人用C#写一个多线程抓取,感觉运行起来比Java快,C#有个HttpWebRequest组件封装挺好的,感觉比java的好用,不知是否理解正确。我也打算用hibernate试试,不知道多线程下hibernate有没有要注意的问题。分有点少,我是新人,多多理解啊。也谢谢各位的回答。