0

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

我是说:

  1. 将 url 放入输入字段
  2. 异步(jQuery?)从给定的 URL 加载内容,例如:
    • 标题
    • 描述
    • 图片
  3. 填充我的视图并将此信息存储在 NoSQL 数据库中,例如 MongoDB

我想使用 Play Framework 2.x 和 Scala 来实现该任务。我怎样才能做到这一点?有什么后端解决方案吗?解析OG标签?

4

1 回答 1

2

因为 Play 使用了 netty 的异步库,所以你可以很简单地做到这一点。

在客户端,您需要$.ajax向您的 Play 服务器发出请求(如果您熟悉 jQuery,则可以使用)。您的播放服务器将异步请求 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 样式选择器语法来查询 DOM。您可以通过这种方式获取标题、元标记和图像。

于 2013-08-05T06:40:19.730 回答