我想像 Facebook 那样从给定的 URL 中提取数据。
我是说:
- 将 url 放入输入字段
- 异步(jQuery?)从给定的 URL 加载内容,例如:
- 标题
- 描述
- 图片
- 填充我的视图并将此信息存储在 NoSQL 数据库中,例如 MongoDB
我想使用 Play Framework 2.x 和 Scala 来实现该任务。我怎样才能做到这一点?有什么后端解决方案吗?解析OG标签?
我想像 Facebook 那样从给定的 URL 中提取数据。
我是说:
我想使用 Play Framework 2.x 和 Scala 来实现该任务。我怎样才能做到这一点?有什么后端解决方案吗?解析OG标签?
因为 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。您可以通过这种方式获取标题、元标记和图像。