首页 > 其他分享 >用Scala采集文库公开资料 一键搞定千万文章收集

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

时间:2024-01-05 10:36:26浏览次数:22  
标签:搞定 文库 Scala URL 一键 url connection setRequestProperty java

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

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

首先,我们需要导入三个库,它们分别是: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,处理分页,处理登录,等等。

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

标签:搞定,文库,Scala,URL,一键,url,connection,setRequestProperty,java
From: https://blog.51cto.com/u_13488918/9110208

相关文章

  • 川普真会说中文?连嘴型都同步,用VideoReTalking一键生成你的AI播报员
    你能想到这种画面吗?霉霉在节目中用普通话接受采访,特朗普在老家用中文脱口秀,蔡明老师操着一口流利的英文调侃潘长江老师..这听起来似乎很魔幻,可如今全部由VideoReTalking实现了你只需要传入一个视频文件和音频文件,它会生成一个新的视频,在这个视频里,不仅人物的嘴型会与音频同步,就连表......
  • 轻松转换,一键搞定:JVS低代码平台的日期格式转换功能详解!
    日期和时间在我们的日常生活中起着至关重要的作用,无论是计划日程、管理项目还是执行其他任务,都需要精确的时间信息。在JVS低代码平台上,日期格式转换主要依赖于逻辑引擎中的函数公式。这些函数为我们的用户提供了一种强大且灵活的方式来处理和转换日期时间数据。我们的时间函数旨在......
  • 五个开源项目帮你一站式搞定单点登录!
    大家好,我是不才陈某~单点登录(SSO)是一种验证方法,它允许用户使用一组登录凭据(如用户名和密码)来访问多个应用程序或系统。这意味着用户登录一次后,就可以无需再次登录即可访问其他系统或服务,在提高了用户体验的同时,也简化了密码管理和增强了安全性。但是单点登录在实际应用中有时会变得......
  • 一键打包,随时运行,Python3项目虚拟环境一键整合包的制作(Venv)
    之前我们介绍了如何使用嵌入式Python3环境给项目制作一键整合包,在使用嵌入式Python环境时,通常是作为另一个应用程序的一部分,而Python3虚拟环境是为了在开发过程中隔离项目所需的Python环境。虚拟环境允许我们在同一台计算机上的不同项目中使用不同的Python版本和软件包,而......
  • spark与scala版本对应查看
    https://mvnrepository.com/artifact/org.apache.spark/spark-core在spark中<!--https://mvnrepository.com/artifact/org.apache.spark/spark-core--><dependency><groupId>org.apache.spark</groupId> //2.10是指scala的版本要是2.10.x的才可以&......
  • Apipost一键压测参数化功能详解
    最近更新中Apipost对UI页面进行了一些调整,另外一键压测功能支持参数化!本篇文章将详细介绍这些改动!API调试页面的细节改动在请求区填入请求参数或脚本时会有相应的标识如在Query中填入多个参数时上方会展示数量在预、后执行脚本中写入脚本上方会有绿色小点标识一键压测参数化一键压......
  • Apipost一键压测参数化功能详解
    最近更新中Apipost对UI页面进行了一些调整,另外一键压测功能支持参数化!本篇文章将详细介绍这些改动!API调试页面的细节改动在请求区填入请求参数或脚本时会有相应的标识如在Query中填入多个参数时上方会展示数量在预、后执行脚本中写入脚本上方会有绿色小点标识 一键压测参......
  • WINDOWS ESC1 escalate privilege
    ESC1utilizationconditions:ESC1needstomeetfollowingrequirementstousesuccessfully1.Havepermissiontoaccquirecertificate2.thevalueof pkiextendedkeyusageis ClientAuthentication,EncryptingFileSystem,SecureEmail  orsmartcardlogin3.CT......
  • 一键式自动给个人云服务搭建常用平台
    背景有时兴致来了就喜欢瞎鼓捣,几年前还是学生时买过学生优惠的云服务器,但没钱续费关停后就不了了之,近期看到有活动又重新入手了但问题就来了,之前好不容易搭建上去的各种服务,现在又得重新来一遍几年前还是学生时可能对这类环境搭建还比较感兴趣现在人老了,精力不够了,做啥都考虑......
  • Windows ESC2 escalate privilege
    BRIEFADCS(ActiveDirectorycertificateservice).TherearealotenterpirseCAsetuptoissuecertificatesusingcertificatetemplatedefinitions,whichareacollectionofregistrationpoliciesandpredefinedcertificatesettings,andcontaininformation......