import java.net.HttpURLConnection
import java.net.URL
import java.net.URLEncoder
import scala.io.Source
val paramMap = Map(
"q" -> "富士山",
"tbs" -> "itp:photo,isz:lt,islt:10mp",
"hl" -> "ja", "source" -> "lnt",
"biw" -> "1024", "bih" -> "768"
)
val url = new URL("http://www.google.co.jp/images?" + paramsMapToQueryString(paramMap, "UTF-8"))
val html = getHtml(url, "UTF-8", Map("User-Agent" -> "Mozilla/5.0 (Windows; U; Windows NT 6.1) Firefox/3.6.8"))
val rLink = """<a class=rg_l [^>]+>""".r
val rUrl = """.+[?;]imgurl=([^&]+).+""".r
val imgUrls = (for (rUrl(imgUrl) <- rLink.findAllIn(html)) yield imgUrl).toList
imgUrls.foreach(println)
printf("%,d件%n", imgUrls.size)
exit
def paramsMapToQueryString(params: Map[String, String], enc: String) = {
val pairs = for ((name, value) <- params) yield List(name, value).map(URLEncoder.encode(_, enc))
pairs.map(_.mkString("=")).mkString("&")
}
def getHtml(url: URL, enc: String, headers: Map[String, String]) = {
val connection = url.openConnection.asInstanceOf[HttpURLConnection]
try {
for ((name, value) <- headers) connection.setRequestProperty(name, value)
val in = connection.getInputStream
try { Source.fromInputStream(in, enc).mkString } finally { in.close }
} finally {
connection.disconnect
}
}