Scala结合HttpClient实现简单的爬虫

Scala是一种“面向对象的函数式”语言。对于不熟悉函数式编程风格的人来说适应Scala确实需要一段时间。也只有多看多写了吧。以下是用Scala结合HttpClient实现的一个简单的爬虫小程序。

package com.eric.crawler

import java.io.{BufferedReader, InputStream, InputStreamReader}

import com.eric.Response
import org.apache.http.HttpEntity
import org.apache.http.client.methods.{CloseableHttpResponse, HttpGet}
import org.apache.http.impl.client.{CloseableHttpClient, HttpClients}
import org.apache.http.util.EntityUtils

import scala.io.Source

object Crawler {

  val httpClient : CloseableHttpClient = HttpClients.createDefault()

  /**
    * doGet请求获取一个网页
    * @param url
    * @return
    */
  def doGet(url : String) : Response = {
    val httpGet : HttpGet = new HttpGet(url)     //初始化httpGet
    val httpResponse : CloseableHttpResponse = httpClient.execute(httpGet)
    val httpEntity : HttpEntity = httpResponse.getEntity
    val inputStream : InputStream = httpEntity.getContent
    val pageContent : String = Source.fromInputStream(inputStream).mkString   //inputStream转化为String
    val status : Int = httpResponse.getStatusLine.getStatusCode
    EntityUtils.consume(httpEntity)   //关闭httpResponse中的inputStream
    httpResponse.close()
    new Response(status, url, pageContent)

  }


  def main(args : Array[String]) : Unit = {
    val seed : String = "这里是网址..."
    val resp : Response = Crawler.doGet(seed)
    println(resp.content)
  }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值