2010-03-25 2 views
0

저는 유튜브, 페이스 북, rapidshare 등의 다양한 인기 웹 사이트에서 컨텐츠를 추출하는 자바 웹 미디어 스크래핑 애플리케이션을 만들고 있습니다.웹 스크래핑 : 어떻게 텍스트 링크에서 스크래퍼 구현을 얻으시겠습니까?

응용 프로그램에는 콘텐츠 URL을 찾는 검색 기능이 포함되지만 사용자가 이미 미디어가있는 경우 사용자가 응용 프로그램에 URL을 붙여 넣을 수 있어야합니다. Youtube Downloader은 이미 다양한 동영상 사이트에서이 작업을 수행합니다.

프로그램에 URL이 제공되면 콘텐츠를 가져 오는 데 사용할 스크레이퍼 종류를 결정합니다. 예를 들어 youtube watch 링크가 YoutubeScraper를 반환하면 Facebook fanpage 링크가 FacebookScraper를 반환합니다.

이렇게하려면 팩토리 패턴을 사용해야합니까?

제 아이디어는 팩토리에 하나의 공용 메소드가 있다는 것입니다. 링크를 나타내는 String 인수를 취하여 Scraper 인터페이스의 적절한 구현을 반환합니다. 나는 Factory가 Scraper 구현리스트를 보유하고 있으며 적절한 Scraper를 찾을 때까지 각 Scraper에 대한 링크를 일치시킬 것입니다. 적당한 것이 없으면 대신 Exception을 던집니다.

답변

0

소리가 좋은 생각입니다. create (URL url) 메소드로 싱글 톤을 원할 가능성이 높습니다. TDD를 사용하여 요구 사항을 명확하게하기 위해이 작업을 수행하는 것이 좋습니다.

+0

조언 해 주셔서 감사합니다. URL 인수를 전달하는 것이 String을 전달하는 것보다 낫다는 것에 동의합니다. –

0

물건을 반품하는 공장은 괜찮습니다. 시도를 일반화하기 위해, 내가 들고 구현을 위해지도를 사용하는 즉 추천 :

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

나중에 당신은지도의 키를 사용하여 URL을 확인하고 그 내용에 맞는 클래스를 인스턴스화 할 수 있습니다.

+0

감사합니다. URL에서 스크래퍼까지의지도가 좋은 방법 일 것이라고 생각합니다. 그러나 Thorbjørn이 말했듯이 정확한 유형은 Map >이어야합니다. –

관련 문제