2010-03-25 72 views
0

我正在构建一个java web媒体抓取应用程序,用于从各种流行网站提取内容:youtube,facebook,rapidshare等。Web抓取:如何从文本链接获取刮板实现?

该应用程序将包括搜索功能来查找内容url,但也应该允许用户将url粘贴到应用程序中(如果它们已经存在于媒体中)。 Youtube Downloader已经为各种视频网站做了这个。

当程序提供一个URL时,它决定使用哪种刮板来获取内容;例如,youtube watch链接返回YoutubeScraper,Facebook fanpage链接返回FacebookScraper等。

我应该使用工厂模式来做到这一点吗?

我的想法是,工厂有一个公共方法。它需要一个表示链接的String参数,并返回一个合适的Scraper接口实现。我想Factory会保存一个Scraper实现的列表,并且会匹配每个Scraper的链接直到找到合适的链接。如果没有合适的,它会抛出异常。

回答

0

听起来很不错。你很可能想要一个带有创建(URL url)方法的单身人士。我建议你使用TDD来做到这一点,让你的需求更清晰。

+0

感谢您的意见。我同意传递URL参数会比传递字符串更好。 – 2010-03-29 11:57:10

0

工厂返回的东西将罚款。为了概括尝试,我推荐使用地图举办的实现,即:

Map<String, Class<Scraper>> scrapers = new HashMap<String, Scraper>(); 
scraper.put("facebook.com", FacebookScraper.class); 
... 

稍后,您可以检查与地图的键url和实例化正确类的内容。

+0

谢谢,我认为从url到scrapers的地图将是一个很好的解决方法。但正如Thorbjørn所说,确切的类型应该是Map >。 – 2010-03-29 11:59:06