java从网页抓取数据(:java实现这个多线程的主要代码,用c#应该也是一样的 )
优采云 发布时间: 2022-01-25 21:29java从网页抓取数据(:java实现这个多线程的主要代码,用c#应该也是一样的
)
任务详情:
有一个信息发布网站,会根据条件查询数据,分页展示,每页15条,每条信息是一个url链接。单击该链接将打开另一个页面,显示该项目的详细信息。
我们需要做的就是抓取每件作品的详细信息,并将其保存到数据库中。
一开始我制作了所有我抓取并保存到数据库中的程序。
运行完发现速度很慢,因为数据量比较大,大概有30万条详细信息需要抓取。
我只是觉得最好用多线程来实现这个,开15个线程,一次抓取一页的所有详细信息,不是很快吗?
后来加了多线程后,一次开了16个线程,比原来快多了,呵呵~!
因为这个项目是用java实现的,下面是java实现这个多线程的主要代码,在c#中应该是一样的!有兴趣的可以翻译成c#,厚厚的~
<p>import java.util.ArrayList;
public class Catcher
{
private static ArrayList threads= new ArrayList();//存储未处理URL
public static boolean isFinished=false;//是否已经把所有的链接存到threads了
public synchronized String getUrl()
{
if(threads.size()>0)
{
String tmp = String.valueOf(threads.get(0));
threads.remove(0);
return tmp;
}else
return null;
}
public void process(){
//处理预处理
//下面开10个线程等待处理
new Thread(new Processer(this)).start();
new Thread(new Processer(this)).start();
new Thread(new Processer(this)).start();
new Thread(new Processer(this)).start();
new Thread(new Processer(this)).start();
new Thread(new Processer(this)).start();
new Thread(new Processer(this)).start();
new Thread(new Processer(this)).start();
new Thread(new Processer(this)).start();
new Thread(new Processer(this)).start();
//进入翻页的处理
for(int j=0;j