【python014】Python爬取并解析潮汐天气简报-潮历数据

1.欢迎点赞、关注、批评、指正,互三走起来,小手动起来!

  • 【python014】Python爬取并解析潮汐天气简报-潮历数据,源代码下载
  • 【python014】Python爬取并解析潮汐天气简报-潮历数据,源代码下载
  • 【python014】Python爬取并解析潮汐天气简报-潮历数据,源代码下载

文章目录

    • 1.简要介绍
    • 2.`Python`版数据爬取、解析代码
    • 3.参考地址

1.简要介绍

  • 参考潮汐数据,网站地址:潮汐表 快速导航,做进一步层次应用。数据可视化效果如下图所示:
    在这里插入图片描述
  • 发现大语言模型写的并不能解决问题,也可能是没付费的原因,haha
  • 趁着空闲的时间撸了段代码,供已参考

2.Python版数据爬取、解析代码

  • 源代码
    import re
    import requests
    import pandas as pd
    from datetime import datetime
    from bs4 import BeautifulSoup 
    import warnings
    warnings.filterwarnings('ignore')pd.set_option('display.width', 500)
    pd.set_option('display.max_rows', 200)
    pd.set_option('display.max_columns', 200)
    pd.set_option('display.max_colwidth', 1000)# 浙江-宁波市-松兰山
    zj_nb_sl_url = 'https://www.eisk.cn/Calendar/1259.html'
    zj_nb_sl_name = '浙江-宁波市-松兰山'
    # 浙江-象山县-西泽
    zj_xs_xz_url = 'https://www.eisk.cn/Calendar/463.html'
    zj_xs_xz_name = '浙江-象山县-西泽'
    # 浙江-象山县-石浦港
    zj_xs_sp_url = 'https://www.eisk.cn/Calendar/460.html'
    zj_xs_sp_name = '浙江-象山县-石浦港'wl15tcxb = '未来15天潮汐表'def parser_response_html( _url, _name ):response = requests.get( _url )  # 发送HTTP请求  response.raise_for_status()  # 如果请求失败,则抛出HTTPError异常  # 解析HTML  soup = BeautifulSoup(response.text, 'html.parser')og_title_desc = soup.find(attrs={"property": "og:description"})['content']result_html = []for a_slice in soup.find_all('a', href = re.compile(r'/Tides/\d+\.html\?date=.*?')):hour = a_slice.find('div', class_='hour').text.strip()hour_date = parser_ymd_date( hour )day = a_slice.find('div', class_='day').text.strip()_temperature = a_slice.find('div', class_='temperature').text.strip()humidity = a_slice.find('div', class_='humidity').text.strip()temperature = a_slice.find('div', class_ = 'temperature', style = re.compile(r'color:.*?') ).text.strip()tide2 = ';'.join( [','.join( c.string.strip() for c in t.contents ) for t in a_slice.find_all('div', attrs={'class':'tide2'})] )skycon = a_slice.find('div', class_='skycon').text.strip()visibility = a_slice.find('div', class_='visibility').text.strip()dswrf = a_slice.find('div', class_='dswrf').text.strip()wave2 = a_slice.find('div', class_='wave2').text.strip()wave1 = a_slice.find('div', class_='wave1').text.strip()wave3 = ''if a_slice.find('div', class_='wave3'):wave3 = a_slice.find('div', class_='wave3').text.strip()wind2 = a_slice.find('div', class_='wind2').text.strip()wind1 = a_slice.find('div', class_='wind1').text.strip()wind3 = a_slice.find('div', class_='wind3').text.strip()description = ''for desc in a_slice.find_all('div', class_='description'):description += desc.text.strip().replace('\n', '').replace('\r', '').replace(' ', '')result_html.append( [og_title_desc, hour_date, day, _temperature, humidity, temperature, tide2, skycon, visibility, dswrf, wave2, wave1, wave3, wind2, wind1, wind3 , description] )result_df = pd.DataFrame( result_html )return result_dfzj_nb_sl_df = parser_response_html( zj_nb_sl_url, zj_nb_sl_name )
    zj_xs_xz_df = parser_response_html( zj_xs_xz_url, zj_xs_xz_name )
    zj_xs_sp_df = parser_response_html( zj_xs_sp_url, zj_xs_sp_name )union_df = pd.concat( [zj_nb_sl_df, zj_xs_xz_df, zj_xs_sp_df] )union_df.columns = [ 'title' ,'hour_date' ,'day' ,'lunar_calendar' ,'humidity' ,'temperature' ,'tide2' ,'skycon' ,'visibility' ,'dswrf' ,'wave2' ,'wave1' ,'wave3' ,'wind2' ,'wind1' ,'wind3 ' ,'description']union_df.to_excel('./%s-%s-%s-%s.xlsx' % ( zj_nb_sl_name ,zj_xs_xz_name ,zj_xs_sp_name ,wl15tcxb ), index=None, encoding='utf8')
    
  • 数据样例解析效果如下图所示:
    在这里插入图片描述

3.参考地址

  • 潮汐表 快速导航
  • 【python014】Python爬取并解析潮汐天气简报-潮历数据源代码下载

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

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

相关文章

EtherNet/IP转Profinet协议转化网关(功能与配置)

如何将EtherNet/IP和Profinet网络连接通讯起来呢?近来几天有几个朋友问到这个问题,那么作者在这里统一说明一下。其实有一个不错的设备产品可以很轻易地解决这个问题,名为捷米特JM-PN-EIP。接下来作者就从该设备的功能及配置详细说明一下。 一&#xf…

Leetcode283. 移动零(java实现)

今天分享的题目是leetcode283移动0(成都人狂喜) 先来看下题目描述 这道题目我也看了官方的题解感觉有点冗余了。 那么我们就不用官方的题解了,分享下我们自己的解体方式。 解题步骤:1.找到非0元素,如果是非0进行记录2…

【C++】utf-8 与string、wstring 转换实现(code)

c++ utf-8 字符 转 string 或者转为 Unicode 的 wstring 代码实现 注意:本代码支持跨平台实现(linux \ windows) 代码如下: 头文件: /******************************************************@Copyright (c) 2024, GhY, All rights reserved.*@文件 UTF8CodeTrans…

网站重构怎么进行

网站重构是一项复杂的任务,涉及许多方面,从技术实现到用户体验的提升。以下是进行网站重构的详细步骤: 1. 需求分析 首先要明确重构的目标和需求,包括功能需求、性能要求以及用户体验的改进点。这需要与利益相关者(如…

Springboot整合Logstash笔记整理

编写核心配置类Configuration(proxyBeanMethods false) EnableConfigurationProperties({LogstashProperties.class}) public class LogstashConfig implements InitializingBean, EnvironmentAware {private final Logger log LoggerFactory.getLogger(LogstashConfig.class…

CentOS6.0安装telnet-server启用telnet服务

CentOS6.0安装telnet-server启用telnet服务 一步到位 fp"/etc/yum.repos.d" ; cp -a ${fp} ${fp}.$(date %0y%0m%0d%0H%0M%0S).bkup echo [base] nameCentOS-$releasever - Base baseurlhttp://mirrors.163.com/centos-vault/6.0/os/$basearch/http://mirrors.a…

json文本怎么转DTO

将JSON文本转换为DTO(Data Transfer Object)通常涉及以下几个步骤: 定义DTO类:首先,根据JSON结构定义相应的Java类,这些类应包含与JSON字段对应的属性和相应的getter和setter方法。 使用JSON处理库&#x…

永劫无间游戏辅助攻略:2024阵容搭配攻略大全!云手机辅助!

《永劫无间》是一款备受玩家喜爱的动作类游戏,其丰富的角色选择和多样的技能搭配让玩家在战斗中体验到了极大的乐趣。然而,要在竞争激烈的战场上脱颖而出,仅仅依靠基础的游戏理解是远远不够的。为了帮助广大玩家提升战斗力,本文将…

Ruby、Python、Java 开发者必备:Codigger之软件项目体检

在编程的广阔天地里,Ruby、Python 和 Java 开发者们各自凭借着独特的语言特性,构建着精彩纷呈的应用世界。然而,无论使用哪种语言,确保项目的高质量始终是至关重要的目标。而 Codigger 项目体检则成为了实现这一目标的得力助手&am…

python机器学习8--网络

1.超文本传输协议HTTP GET 在实际开发应用程序时,一定都会利用WiFi网络进行连接,再通过HTTP的方式读入后台的数据,并下载和显示在用户的PC上。这靠的是网络服务的技术,也就是大家提到的Web Service。而与HTTP服务器交换数据有两种…

【React】详解“最新”和“最热”切换与排序

文章目录 一、基本概念和初始化二、切换与排序功能的实现1. 函数定义和参数2. 设置活动 Tab3. 定义新列表变量4. 根据排序类型处理列表4.1 按时间降序排序4.2 按点赞数降序排序 5. 更新评论列表 三、渲染导航 Tab 和评论列表1. map 方法2. key 属性3. className 动态赋值4. onC…

GitHub每日最火火火项目(7.26)

1. 项目名称:meta - llama / llama3 项目介绍:这是 Meta Llama 3 的官方 GitHub 站点。目前尚不清楚该项目的具体功能和特点,但从名称推测,它可能与 Llama 3 模型相关,或许涉及到该模型的开发、训练或应用等方面。 项…

数据结构(二叉树)

树 树的概念与结构 树是⼀种⾮线性的数据结构,它是由n(n>0)个有限结点组成⼀个具有层次关系的集合。把它叫做树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,⽽叶朝下的。 • 有⼀个特殊的结点,…

linux 桌面版安装原生微信的方式列举

linux 桌面版安装原生微信的方式列举 方法1:下载deb安装包安装 下载地址:https://github.com/lovechoudoufu/wechat_for_linux/releases 安装示例: sudo dpkg -i linuxqq_3.2.10-25765_amd64.deb方法2:Flatpak安装 安装flatp…

docker dotnet-dump离线部署

1.下载指定dotnet版本的dotnet-dump 示例地址: https://www.nuget.org/packages/dotnet-dump/3.1.141901#dependencies-body-tab 我本地测试的是netcore 3.1 2. 在本地解压 将文件解压出来。看到any目录,能看到我们要用的dotnet-dump文件 3. 将tools/netcoreapp2.…

qt实现智能家居(语言控制+服务器监听)

目录 介绍页面展示环境搭建开发工具开发环境百度token 连接服务器 介绍 qt智能家居(语音控制) 视频演示地址:进入哔哩哔哩 仓库地址:Gitee 源代码:百度网盘 默认密码是123456 页面展示 登录页面演示图 控制中心页…

SpringBoot运行流程源码分析

run方法核心流程 我们在启动SpringBoot的时候调用的是SpringApplication类的静态run方法。其核心流程如下图所示: 在run方法内完成了SpringApplication的声明周期。,这个过程涉及的几个核心类如下: SpringApplicationRunListeners&#xff…

一起学Java(1)-新建一个Gradle管理的Java项目

一时兴起,也为了便于跟大家同步学习进展和分享样例代码,遂决定创建一个全新的Java项目,并通过Github与大家分享。本文就是记录该项目的创建过程以及其中的一些知识要点(如Gradle等)。为了紧跟技术潮流和提高操作效率&a…

dp有时候就是找规律 343. 整数拆分 python 力扣

343. 整数拆分 已解答 中等 相关标签 相关企业 提示 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1,…

TCP服务器主动断开客户端

自定义消息函数 afx_msg LRESULT CbaseMFCprojectDlg::OnOnsocketbartender(WPARAM wParam, LPARAM lParam) WPARAM wParam:消息来源 res recv(wParam, cs, 65535, 0);获取这个客户端端口socket通道里面的信息长度为65535存放在cs里面 如果获取得到res0即是说明该客户端已经断…