2010-03-25 46 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