Http Scala和html:将图像(*.jpg等)下载到硬盘

Http Scala和html:将图像(*.jpg等)下载到硬盘,http,scala,download,Http,Scala,Download,我有一个Scala程序,可以下载和解析html。我从html中获得了图像文件的链接,现在我需要将这些图像传输到硬盘。我想知道我应该使用什么样的Scala方法 我的连接代码: import java.net._ import java.io._ import _root_.java.io.Reader import org.xml.sax.InputSource import scala.xml._ def parse(sUrl:String) = { var url = new UR

我有一个Scala程序,可以下载和解析html。我从html中获得了图像文件的链接,现在我需要将这些图像传输到硬盘。我想知道我应该使用什么样的Scala方法

我的连接代码:

import java.net._
import java.io._
import _root_.java.io.Reader
import org.xml.sax.InputSource

import scala.xml._

def parse(sUrl:String) = {
    var url = new URL(sUrl)
    var connect = url.openConnection

    var sorce:InputSource = new InputSource
    var neo = new TagSoupFactoryAdapter //load sUrl
    var input = connect.getInputStream

    sorce.setByteStream(input)
    xml = neo.loadXML(sorce)
    input.close
}

实现这一点的一种方法是:收集图像的url并向服务器请求它们(打开与图像url的新连接并将ByTestStream存储在硬盘驱动器中)

然后您可能需要查看。虽然该解决方案是纯Java的,但您仍然可以修改Scala语法以“仅使用它”

另一种选择是使用更干净的系统命令

import sys.process._
import java.net.URL
import java.io.File

object Downloader {
  def start(location: String) : Unit = {
    val url = new URL(location)

    var path = url match {
      case UrlyBurd(protocol, host, port, path) => (if (path == "") "/" else path)
    }

    path = path.substring(path.lastIndexOf("/") + 1)

    url #> new File(path) !!
  }
}

object UrlyBurd {
  def unapply(in: java.net.URL) = Some((
    in.getProtocol, 
    in.getHost, 
    in.getPort,
    in.getPath
  ))
}

得到那部分,如果你能给出一些示例代码,我很感激我没有代码。保存到文件中的代码应该与您拥有的代码几乎相同,但不是loadXML,而是写入到文件中。要获取所有URL图像,您可以选择所有图像标记并提取源属性,然后为每个图像调用上面的save方法。太棒了!谢谢幸运的是,我正在使用maven,所以我现在只是把它放在一个.java文件中。