Facebook喜欢使用Play Framework 2.x提取URL数据

时间:2013-08-05 05:35:21

标签: jquery facebook scala playframework

我想像Facebook那样从给定的URL中提取数据。

我的意思是:

  1. 将网址添加到输入字段
  2. Asynchronosuly(jQuery?)从给定的URL加载内容,如:
    • 标题
    • 描写的特征
    • 图片
  3. 填充我的视图并将此信息存储在NoSQL数据库中,如MongoDB
  4. 我想使用Play Framework 2.x和Scala来实现这项任务。 我怎样才能做到这一点?任何后端解决方案? 解析OG标签?

1 个答案:

答案 0 :(得分: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。您可以通过这种方式获取标题,元标记和图像。