2013-08-05 4 views
0

페이스 북처럼 주어진 URL에서 데이터를 추출하고 싶습니다.Play Framework 2.x로 URL 데이터 추출하기

가 내 말 :

  1. 넣어 URL 입력 필드에
  2. Asynchronosuly (jQuery를?) 같은 지정된 URL에서로드 내용 :
    • 제목
    • Descripton
    • 이미지
  3. 내보기 채우기 및이 inf 저장 MongoDB와 같은 NoSQL 데이터베이스에서 ormation

그 작업을 실현하기 위해 Play Framework 2.x와 Scala를 사용하고 싶습니다. 어떻게해야합니까? 백엔드 솔루션은 무엇입니까? OG 태그를 파싱 하시겠습니까?

답변

2

Play는 netty의 비동기 라이브러리를 사용하기 때문에이를 매우 간단하게 수행 할 수 있습니다.

클라이언트 측에서는 Play 서버에 요청 (jQuery의 $.ajax이 익숙한 경우 작동)을 원할 것입니다. 재생 서버가 비동기 적으로 URL을 요청한 다음 응답을 구문 분석합니다.

case class ScrapedPage(title: String, desc: String, image: String) 

def scrape(url: String) = Action { 
    // Perhaps: check if you've already scraped this page from your db? If not: 
    Async { 
    WS.url(url).get().map { response => 
     val scrapedPage = parsePage(response.body) 

     // Store this data into your database... then, 

     Ok(
     Json.obj("title" -> scrapedPage.title, "desc" -> scrapedPage.desc, "image" -> scrapedPage.image) 
    ) 
    } 
    } 
} 

def parsePage(body: String): ScrapedPage = ??? 

콜백에서 클라이언트는이 데이터를 유용한 방식으로 UI에 채울 수 있습니다.

이 데이터를 데이터베이스에 저장하려면 구현은 사용중인 데이터베이스/액세스 계층에 따라 달라집니다. 이것은 너무 복잡해서는 안됩니다.

페이지를 구문 분석 할 때 몇 가지 옵션이 있습니다. jsoup을 확인하십시오. CSS/jQuery style selector syntax을 사용하여 DOM을 쿼리 할 수 ​​있습니다. 제목, 메타 태그 및 이미지를 그런 식으로 붙잡을 수 있습니다.