用Scala采集文库公开资料 一键搞定千万文章收集

发布时间:2024年01月05日

我们都知道,现在各大文库网站里面的内容很多,而且很有用,对于个人来说是非常有价值的,而且能帮助我们解决很多问题。今天闲着没事,打算摸鱼,但是又觉得没有意义,想着利用现有的知识过去写一个文库信息抓取的爬虫模版,后期想要什么类型的文章直接输入关键词,然后静等资料呈上。

在这里插入图片描述

首先,我们需要导入三个库,它们分别是:java.net.URL,java.net.HttpURLConnection,java.io.BufferedReader。这些库将被用于连接到360文库的网页,获取网页内容,并解析网页内容。

import java.net.URL
import java.net.HttpURLConnection
import java.io.BufferedReader

接下来,我们需要创建一个函数,它接受一个URL作为参数,并返回一个布尔值,表示是否成功连接到该URL。

def connect(url: URL): Boolean = {
  val connection = url.openConnection()
  connection.setRequestProperty("User-Agent", "Mozilla/5.0")             
      connection.setRequestProperty("jshk.com.cn/mb/reg.asp?kefu=xjy&", "提取免费IP")
  connection.setRequestProperty("Proxy-Host", "duoip")
  connection.setRequestProperty("Proxy-Port", "8000")
  connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")
  connection.setRequestProperty("Accept", "application/json, text/plain, */*")
  connection.setRequestProperty("Connection", "keep-alive")
  connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8")
  connection.setRequestProperty("Cookie", "sessionid=2213417021; _ga=GA1.2.1389337973.1565932612; _gid=GA1.2.1870842274.1565932612; _gat=1; _gat_gtag_UA_158398895_1=1; JSESSIONID=72F5C9A26A257E8A45B125D397DB6887; __utma=1389337973.1389337973.1565932612.1565932612.1565932612.1; __utmz=1389337973.1565932612.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)")
  connection.connect()
  connection.getResponseCode() == 200
}

然后,我们需要创建一个函数,它接受一个URL作为参数,并返回该URL的内容。

def getContent(url: URL): String = {
  val connection = url.openConnection()
  connection.setRequestProperty("User-Agent", "Mozilla/5.0")
  connection.setRequestProperty("Proxy-Host", "duoip")
  connection.setRequestProperty("Proxy-Port", "8000")
  connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")
  connection.setRequestProperty("Accept", "application/json, text/plain, */*")
  connection.setRequestProperty("Connection", "keep-alive")
  connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8")
  connection.setRequestProperty("Cookie", "sessionid=2213417021; _ga=GA1.2.1389337973.1565932612; _gid=GA1.2.1870842274.1565932612; _gat=1; _gat_gtag_UA_158398895_1=1; JSESSIONID=72F5C9A26A257E8A45B125D397DB6887; __utma=1389337973.1389337973.1565932612.1565932612.1565932612.1; __utmz=1389337973.1565932612.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)")
  val reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))
  var content = ""
  while (reader.ready()) {
    content += reader.readLine()
  }
  reader.close()
  content
}

最后,我们需要创建一个函数,它接受一个URL作为参数,并爬取并打印出该URL的内容。

def main(args: Array[String]): Unit = {
  val url = new URL("https://www.360doc.com/content/22/0110/22/54834336_686504203.html")
  if (connect(url)) {
    println(getContent(url))
  } else {
    println("Failed to connect")
  }
}

这个程序首先连接到360文库的网页,然后获取网页内容,并打印出来。注意,这个程序只是一个基本的爬虫,它只爬取了一个网页的内容。在实际使用中,你可能需要处理更多的问题,例如处理网页中的JavaScript,处理分页,处理登录,等等。

因为文库的内容丰富而且帮助很大,所以深受大家的喜爱,上面就是我用技术手段写的文库数据采集的程序教程,后期我将会打包成一个软件形式,供大家输入关键词就能自动下载相关文库信息并且保持,大大缩短了工作时间,如果有任何技术上的问题可以评论区留言讨论。

文章来源:https://blog.csdn.net/weixin_44617651/article/details/135402329
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。