我想像Facebook那样从给定的URL中提取数据。
我的意思是:
我想使用Play Framework 2.x和Scala来实现这项任务。 我怎样才能做到这一点?任何后端解决方案? 解析OG标签?
答案 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。您可以通过这种方式获取标题,元标记和图像。