用Scala采集出行平台机票价格信息

年关将至,趁着过年,打算拖家带口的出去游玩一番,目前也没有什么计划,去哪里玩也比较随机。正好年底公司项目都已经完成差不多,利用空余时间,用爬虫爬取各大景点飞机票价格信息,选择景点不错机票便宜的,来场说走就走的旅行,犒劳一下自己。

在这里插入图片描述

以下是一个简单的示例,用于抓取网页上的机票价格信息:

import java.net.URL
import java.net.URLConnection
import java.io.BufferedReader
import java.io.InputStreamReader
import scala.collection.mutable.ListBufferobject Main {def main(args: Array[String]): Unit = {提取ip jshk.com.cn/mb/reg.asp?kefu=xjy&csdnval proxyHost = "duoip"val proxyPort = "8000"// 创建一个代理URL连接val proxyURL = new URL("http://" + proxyHost + ":" + proxyPort)val proxy = new Proxy(Proxy.Type.HTTP, proxyURL)val conn = new URL("http://www.example.com").openConnection()conn.setProxy(proxy)// 连接到目标页面conn.connect()// 创建一个读取输入流val in = new BufferedReader(new InputStreamReader(conn.getInputStream()))// 创建一个缓冲区来存储结果val buffer = new ListBuffer[String]()// 从输入流中读取一行var line = in.readLine()while (line != null) {buffer += lineline = in.readLine()}// 打印结果buffer.foreach(println)// 关闭连接in.close()conn.disconnect()}
}

解释:

1、首先,我们导入了需要的一些库,如java.net.URLjava.net.URLConnectionjava.io.BufferedReaderjava.io.InputStreamReader

2、然后,我们定义了代理的主机名和端口号。

3、接下来,我们创建了一个代理URL连接,并将其与代理URL关联。

4、我们连接到目标页面。

5、然后,我们创建了一个读取输入流。

6、我们创建了一个缓冲区来存储结果。

7、我们从输入流中读取一行,并将其添加到缓冲区中。

8、最后,我们打印缓冲区中的所有行,并关闭连接。

请注意,这只是一个基础的示例,实际的爬虫程序可能会更复杂,需要处理更多的细节,如错误处理、设置超时、处理HTML等。此外,许多出行平台可能不允许直接爬取其数据,因此在实际使用中,您可能需要遵循平台的条款和条件,并确保您的爬虫程序不会对平台造成过大的负担或影响。

以上就是今天我写的一个爬虫代码并做可视化分析,现在已经选择好目的地了,就等到时间一起出发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【XR806开发板试用】单总线协议驱动DHT11温湿度传感器

1.昨天刚收到极速社区寄来的全志XR806开发板,之前用过很多全志的SOC芯片,但是像这种无线芯片还是第一次用。这次打算使用XR806芯片驱动一下DHT11温湿度传感器。 2.代码如下: #include "common/framework/platform_init.h" #inclu…

鸿蒙Harmony--AppStorage--应用全局的UI状态存储详解

无所求必满载而归,当你降低期待,降低欲望,往往会得到比较好的结果,把行动交给现在,用心甘情愿的态度,过随遇而安的生活,无论结果如何,都是一场惊喜的获得! 目录 一,定义 …

文献阅读:Large Language Models as Optimizers

文献阅读:Large Language Models as Optimizers 1. 文章简介2. 方法介绍 1. OPRO框架说明2. Demo验证 1. 线性回归问题2. 旅行推销员问题(TSP问题) 3. Prompt Optimizer 3. 实验考察 & 结论 1. 实验设置2. 基础实验结果 1. GSM8K2. BBH3.…

多测师肖sir___ui自动化测试po框架讲解版

po框架 一、ui自动化po框架介绍 (1)PO是Page Object的缩写(pom模型) (2)业务流程与页面元素操作分离的模式,可以简单理解为每个页面下面都有一个配置class, 配置class就用来维护页面…

如何用GPT/GPT4进行AI绘图?

详情点击链接:如何用GPT/GPT4进行AI绘图? 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析,AI画图,图像识别,文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二定制自…

QT笔记 - 添加项目到版本控制系统 - Git

说明 Git可以在很小的磁盘占用下保存当前项目的多个不同版本,且极为方便切换到任意版本。这对Qt项目非常实用。下面介绍如何为项目添加Git版本控制系统。 下载Git 操作系统若没有安装Git,需要安装。 下载​​​​​​​ 创建项目时添加项目到Git 安…

前端秋本名学习笔记

css-html 浏览器:FireFox、Safari苹果、Chrome谷歌、IE W3C制定html规则、OpenSSL加密、html超文本标记语言 IDE:HhuilderX、vscode !DOCTYPE html文档声明、html(lang”zh-CN”)、head、body、meta元信息、title标签名、base(target)、link(rel类型、hr…

HCIA的网络地址转换NAT

NAT:网络地址转换 功能: 1.将大量的私有地址转换成公有地址(节约IP地址) 2.将一个IP地址转换成另一个IP地址(公有的)(增加内部网络设备的安全性):比如有一个内网&#xf…

SVN账户管理

1.新增用户 sudo htpasswd -c /etc/svn-auth-users test002 2.删除用户 sudo htpasswd -D /etc/svn-auth-users test002 3.修改密码 sudo htpasswd -d /etc/svn-auth-users test002

(1)(1.13) SiK无线电高级配置(七)

文章目录 前言 17 技术细节 18 名词解释 前言 本文提供 SiK 遥测无线电(SiK Telemetry Radio)的高级配置信息。它面向"高级用户"和希望更好地了解无线电如何运行的用户。 17 技术细节 在评估该无线电是否符合当地法规时,了解其使用的技术可能会有所帮…

Python学习从0到1 day4 python格式化输出和输入方法

其实我不是我,我是青山辽阔 ——24.1.14 一、百分号形式的格式化输出 1.普通输出 #1.定义一些变量 name 陈浩南 age 25 address 广州市天河区#2.变量的输出(普通输出) print(name) print(age) print(address)#3.Python中,还允…

论文阅读:Attention is all you need

【最近课堂上Transformer之前的DL基础知识储备差不多了,但学校里一般讲到Transformer课程也接近了尾声;之前参与的一些科研打杂训练了我阅读论文的能力和阅读源码的能力,也让我有能力有兴趣对最最源头的论文一探究竟;我最近也想按…

Vue2-Vuex中State、Mutation及mapState辅助函数、mapMutations的基本用法

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 个人笔记,仅供参考。 state:全局共享的响应式数据 mutation:声明修改全局响应式数据…

分数1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 求和

要求&#xff1a;计算1/1-1/21/3-1/41/5 …… 1/99 - 1/100 的值&#xff0c;打印出结果。 法一&#xff1a; 从要求&#xff0c;我们可以看出&#xff0c;计算内容分为正数和负数。对他们求和&#xff0c;可以通过分别求和再相加。 #include<stdio.h> int main() {fl…

9.云原生存储之ceph在k8s中应用及问题处理

云原生专栏大纲 文章目录 ceph应用场景ceph应用在k8s集群外使用块设备ceph客户端配置创建块挂载使用删除pool 在k8s集群内使用块设备创建块池和StorageClass使用存储 块存储映射问题处理问题现象事件分析csi-rbdplugin pod日志分析问题小结CentOS 7 编译安装 nbd 模块nbd内核模…

Chapter 9 运算符重载

目的&#xff1a;运用运算符重载 &#x1f353;&#x1f353;&#x1f353;&#x1f353;&#x1f353;&#x1f353;&#x1f353;&#x1f353;&#x1f353;&#x1f353;&#x1f353;&#x1f353;&#x1f353;&#x1f353;&#x1f353;&#x1f353;&#x1f353;&…

go语言将cmd stdout和stderr作为字符串返回而不是打印到控制台

go语言将cmd stdout和stderr作为字符串返回而不是打印到控制台 1、直接打印到控制台 从 golang 应用程序中执行 bash 命令&#xff0c;现在 stdout 和 stderr 直接进入控制台&#xff1a; cmd.Stdout os.Stdout cmd.Stderr os.Stderrpackage mainimport ("fmt"…

MySQL8密码重置——Windows环境

1. 环境变量配置 加入操作会方便点&#xff0c;不用每次都要进入其安装目录 Path环境变量加入&#xff1a;%MYSQL_HOME%\bin 2. 停掉服务及服务安装 3. 创建my.ini MySQL安装目录&#xff08;C:\Program Files\MySQL\MySQL Server 8.0&#xff09;下创建my.ini文件 my.ini文…

Python函数,函数的定义和调用,函数的参数、返回值及类型、嵌套、作用域

函数是一段可重复使用的代码块&#xff0c;用于执行特定的任务。在Python中&#xff0c;函数可以通过定义和调用来使用。 函数的定义使用关键字def&#xff0c;后面跟着函数名、括号以及冒号。函数体缩进在冒号之后的下一行开始&#xff0c;用于执行特定的功能。函数的定义通常…

Chrome 插件 V3 版本 Manifest.json 中的内容脚本(Content Scripts)解析

内容脚本&#xff08;Content Scripts&#xff09; 指定在用户打开某些网页时要使用的 JavaScript 或 CSS 文件。 内容脚本是在网页环境中运行的文件。通过使用标准文档对象模型 (DOM)&#xff0c;开发者能够读取浏览器所访问网页的详情、更改这些网页&#xff0c;并将信息传递…