我的应用程序需要一些网页抓取功能。我有URL对象下载所有数据。但是我需要抓取很多页面并创建许多URL对象,因此我打开了许多连接。如何优化它,所以我可以有一个连接,只用它导航到其他页面?
干杯
答案 0 :(得分:0)
据我所知,每个URL必须有不同的URLConnection
(这是有意义的,因为底层网络连接也必须改变)。我非常怀疑创建这个对象是你的瓶颈;我怀疑这是网络时间,但没有配置文件,很难确定。
对于适量的页面,我会考虑一个工作队列(比如使用ExecutorService
)。对于大量页面,我甚至可能会研究Map/Reduce的Java版本。
编辑:要使Map / Reduce比简单的工作队列更好,您需要有多台计算机可用于进行抓取。
答案 1 :(得分:0)
您可以使用Apache HTTP components,它有很多功能,包括支持concurrent access的连接管理器