我需要做一个程序来下载网页,也就是说,我给网页提供了一个网页,它会下载网站上的所有文件。
我也会通过一定程度的深度,即软件下载网站每个文件的级别。
我将用Java开发这个软件,我也需要使用并发。
请告诉我你对如何做到这一点的看法。
感谢您的帮助。
感谢大家的帮助。
我还需要再问一件事。如何从网站下载文件?
再来一次。 = d答案 0 :(得分:2)
一个非常有用的蜘蛛和机器人库:htmlunit
答案 1 :(得分:0)
嗯,如果不知道你需要多详细的指导,这有点难以回答,但这里是一个概述。 :)
实际上,Java使这些应用程序非常容易,因为HTTP请求和线程都很容易获得。我的解决方案可能涉及一个包含新url的全局堆栈,以及一个从堆栈中弹出url的常量线程的服务器场。我将网址存储为自定义对象,以便我可以跟踪深度。我认为您的主要问题是网站没有响应,或者没有遵循HTTP标准。我已经在类似的应用程序中多次注意到,有时它们没有正常超时,最终它们最终会阻塞所有线程。不幸的是,我在这里没有任何好的解决方案。
一些有用的课程作为起点:
http://java.sun.com/javase/6/docs/api/java/lang/Thread.html
http://java.sun.com/javase/6/docs/api/java/lang/ThreadGroup.html
http://java.sun.com/javase/6/docs/api/java/net/URL.html
http://java.sun.com/javase/6/docs/api/java/net/HttpURLConnection.html
答案 2 :(得分:0)
我会看看这些资源:
http://hc.apache.org/httpclient-3.x/
http://java.sun.com/javase/6/docs/api/java/util/concurrent/package-summary.html
http://java.sun.com/javase/6/docs/api/java/util/concurrent/locks/package-summary.html
答案 3 :(得分:0)
我会看一下Java Executors包。您创建一组任务(Runnable s)并将它们传递给合适的Executor。你得到一个Future,然后你可以查询它的结果。
Executor将在执行此Runnable时进行协调。对于单线程执行程序,具有线程池等的执行程序,存在实现。因此,您不必担心(太多)wrt。线程错综复杂。并发实用程序将为您提供此服务。
Apache HTTP Client将为您提供HTTP查询。