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

news2024/11/18 19:34:34

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_df
    
    zj_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.coloradmin.cn/o/1955465.html

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

相关文章

Aria2 任意文件写入漏洞

目录 Aria2介绍漏洞描述漏洞复现 Aria2介绍 Aria2是一个在命令行下运行,多协议,多来源下载工具(HTTP / HTTPS,FTP,BitTorrent,Metalink),内建XML-RPC用户界面。Aria提供RPC服务器&a…

2.9.GoogLeNet

GoogLeNet ​ 主要解决了什么样大小的卷积核是最合适的:有时使用不同大小的卷积核组合是有利的 1.Inception块 ​ Inception块由四条并行路径组成。 前三条路径使用窗口大小为11、33和55的卷积层,从不同空间大小中提取信息。 ​ 中间的两条路径在输入…

任务管理无忧:2024年最佳7款待办事项管理软件

本文将分享2024年值得关注的7大优质待办事项管理软件:PingCode、Worktile、滴答清单、时光序、好用便签、Todoist、ClickUp。 在寻找完美的待办事项管理工具时,你是否感觉到选择众多却难以决断?无论是保持日程有序,还是优化团队协…

Linux基本用法(上)

1.计算机主要由 硬件和软件 组成 2.操作系统是什么 ? 有什么作用? 操作系统是软件的一类 主要作用是协助用户调度硬件工作,充当用户和计算机之间的桥梁 3.常见的操作系统有哪些? PC端: Windows,Linux,MacOS 移动端: Android&#xff…

UART 通信协议

文章目录 一 简介二 电平标准三 引脚定义四 数据格式五 波特率 一 简介 ​ UART (Universal Asynchronous Receiver/Transmitter),通用异步收发器,是一种串行、异步、全双工通信协议。 串行:利用一条传输线,将数据一位一位地传送…

YOLOv8改进 | 主干网络 | ⭐重写星辰Rewrite the Stars⭐【CVPR2024】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

vulntarget-a

实际部署之后的win7 ip: 192.168.127.128 具体攻击过程如下 win7 扫描服务 使用fscan扫描win 7中的服务以及漏洞 ./fscan -h 192.168.127.128 扫出来一个ms17-010以及通达oa的漏洞,既然有永恒之蓝的,直接上MSF就行了 msf6 > search ms17-010 msf6…

架子鼓鼓谱制谱什么软件好 Guitar Pro怎么编鼓谱

对那些想学架子鼓又缺乏预算的朋友来说,通过架子鼓谱子软件来模拟学习也是个不错的选择。不过,由于市面上类似的软件过多,许多人都挑花了眼!那么,架子鼓谱子软件哪个比较好用呢?下面小编就来推荐几款好用的…

HTML--JavaScript操作DOM对象

目录 本章目标 一.DOM对象概念 ​编辑 二.节点访问方法 常用方法: 层次关系访问节点 三.节点信息 四.节点的操作方法 操作节点的属性 创建节点 删除替换节点 五.节点操作样式 style属性 class-name属性 六.获取元素位置 总结 本章目标 了解DOM的分类和节…

【论文精读】 | 基于图表示的视频抑郁症识别的两阶段时间建模框架

文章目录 0、Description1、Introduction2、Related work2.1 Relationship between depression and facial behaviours2.2 Video-based automatic depression analysis2.3 Facial graph representation 3、The proposed two-stage approach3.1 Short-term depressive behaviour…

18746 逆序数

这个问题可以使用归并排序的思想来解决。在归并排序的过程中,我们可以统计逆序数的数量。当我们合并两个已经排序的数组时,如果左边的数组中的元素��于右边的数组中的元素,那么就存在逆序,逆序数的数量就是…

力扣SQL50 按分类统计薪水 条件统计

Problem: 1907. 按分类统计薪水 文章目录 思路Code 思路 &#x1f468;‍&#x1f3eb; 参考题解 Code SELECT Low Salary AS category,SUM(CASE WHEN income < 20000 THEN 1 ELSE 0 END) AS accounts_count FROM AccountsUNION SELECT Average Salary category,SUM(C…

DBus快速入门

DBus快速入门 参考链接&#xff1a; 中文博客&#xff1a; https://www.e-learn.cn/topic/1808992 https://blog.csdn.net/u011942101/article/details/123383195 https://blog.csdn.net/weixin_44498318/article/details/115803936 https://www.e-learn.cn/topic/1808992 htt…

Vue3 Pinia的创建与使用代替Vuex 全局数据共享 同步异步

介绍 提供跨组件和页面的共享状态能力&#xff0c;作为Vuex的替代品&#xff0c;专为Vue3设计的状态管理库。 Vuex&#xff1a;在Vuex中&#xff0c;更改状态必须通过Mutation或Action完成&#xff0c;手动触发更新。Pinia&#xff1a;Pinia的状态是响应式的&#xff0c;当状…

JAVA中的异常:异常的分类+异常的处理

文章目录 1. 异常的分类1.1 Error1.2 Exception1.2.1 运行时异常1.2.2 非运行时异常 2.异常的处理2.1 try catch用法2.2 throws和throw的区别 1. 异常的分类 Throwable类&#xff08;表示可抛&#xff09;是所有异常和错误的超类&#xff0c;两个直接子类为Error和Exception分…

C++11新特性——智能指针——参考bibi《 原子之音》的视频以及ChatGpt

智能指针 一、内存泄露1.1 内存泄露常见原因1.2 如何避免内存泄露 二、实例Demo2.1 文件结构2.2 Dog.h2.3 Dog.cpp2.3 mian.cpp 三、独占式智能指针:unique _ptr3.1 创建方式3.1.1 ⭐从原始(裸)指针转换&#xff1a;3.1.2 ⭐⭐使用 new 关键字直接创建&#xff1a;3.1.3 ⭐⭐⭐…

敏感信息泄露wp

1.右键查看网页源代码 2.前台JS绕过&#xff0c;ctrlU绕过JS查看源码 3.开发者工具&#xff0c;网络&#xff0c;查看协议 4.后台地址在robots,拼接目录/robots.txt 5.用dirsearch扫描&#xff0c;看到index.phps,phps中有源码&#xff0c;拼接目录&#xff0c;下载index.phps …

【Go - context 速览,场景与用法】

作用 context字面意思上下文&#xff0c;用于关联管理上下文&#xff0c;具体有如下几个作用 取消信号传递&#xff1a;可以用来传递取消信号&#xff0c;让一个正在执行的函数知道它应该提前终止。超时控制&#xff1a;可以设定一个超时时间&#xff0c;自动取消超过执行时间…

Oat++ 后端实现跨域

这里记录在官方的例子中&#xff0c;加入跨域。Oat Example-CRUD 在官方的例子中&#xff0c;加入跨域。 Oat Example-CRUD 修改AppComponent.hpp文件中的代码&#xff0c;如下&#xff1a; #include "AppComponent.hpp"#include "controller/UserController…

8、从0搭建企业门户网站——网站部署

目录 正文 1、域名解析 2、云服务器端口授权 3、Mysql数据库初始化 4、上传网站软件包 5、Tomcat配置 6、运行Tomcat 7、停止Tomcat 8、部署后发现验证码无法使用 完毕! 正文 当云服务器租用、域名购买和软件开发都完成后,我们就可以开始网站部署上线,ICP备案会长…