python图片分析中央气象台降水_获取中央气象台网的气象数据 全流程技术解析(python 爬虫)...
一、Python环境搭建
下载安装python
下载安装PyCharm,Community版即可
理论上应该先安装python再安装IDE(PyCharm),必要时按网上要求进行环境变量设置。
二、爬虫背景知识
1.网页结构简介
网页一般由三部分组成:HTML(超文本标记语言)、CSS(层叠样式表)和JScript(活动脚本语言)。
其中,HTML相当于网页的结构框架,查看网页源代码时,可见大量成对出现的HTML标签“<>”,如下所示:
..表示标记中间的元素是网页
..表示用户可见的内容
表示框架
..
表示段落..表示列表..表示图片
..
表示标题..表示超链接
CSS定义元素外观及修饰效果,JScript负责实现交互功能及特效。
2. 爬虫合法性
Robots协议(也称为爬虫协议)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。它是国际互联网界通行的道德规范,虽然没有写入法律,但是每一个爬虫都应该遵守这项协议。从目前的情况来看,如果抓取的数据属于个人使用或科研范畴,基本不存在问题; 而如果数据属于商业盈利范畴,就要就事而论,有可能属于违法行为,也有可能不违法。当然也有部分网站没有设定 robots.txt。对于没有设定 robots.txt 的网站可以通过网络爬虫获取没有口令加密的数据,也就是该网站所有页面数据都可以爬取。
以淘宝为例:https://www.taobao.com/robots.txt
三、使用GET方式抓取数据
1. 安装requests、bs4和lxml库
打开PyCharm,File > Settings...
选择“Project Interpreter”(项目编译器)命令,确认当前选择的编译器,然后单击右上角的加号
以requests为例,其他与之相同。在搜索框输入:requests(一定要输入完整),然后单击左下角的“Install Package”
安装完成后,会在 Install Package 上显示“Package‘requests’ installed successfully”
2. 代码分析
此时会显示出开发者见面,高亮处标示元素即为检查元素(2.8mm),对其右键 > Copy > Copy selector
复制内容如下:
#day0 > div:nth-child(1) > div:nth-child(3)
使用 soup.select 引用这个路径,代码如下:
1 import requests #加载 requests 库,用于网页获取
2 from bs4 import BeautifulSoup #加载 BeautifulSoup 库,用于解析获取的网页
3
4 url = 'http://www.nmc.cn/publish/forecast/AGD/shunde.html' #中央气象台网顺德区预报网页
5 strHtml =requests.get(url)6 strHtml.encoding = strHtml.apparent_encoding #指定源网页编码方式作为文字解码方式
7 soup = BeautifulSoup(strHtml.text, 'lxml')8 data = soup.select('#day0 > div:nth-child(1) > div:nth-child(3)') #将 Copy selector 代码粘贴在(‘’)内
9 print(data)
运行脚本,可见上述元素已经获取。
至此,已经获得了一段目标元素的 HTML 代码,但还没有把数据提取出来。可以观察所获取的HTML代码结构,对获取的内容进行清洗。若获取的HTML片段如行1所示,可以使用get_text()方法获取字段”2.8mm“,若HTML片段如行2所示,可通过contents[0]方法获取字段“05/21”。
1 [
] data[0].get_text()2 [
周四
] data[0].contents[0]
相对完整的代码案例如下:
1 import requests #加载 requests 库,用于网页获取
2 from bs4 import BeautifulSoup #加载 BeautifulSoup 库,用于解析获取的网页
3 import csv #csv 库(python 内置),用于读写csv文件
4
5 url = 'http://www.nmc.cn/publish/forecast/AGD/shunde.html' #中央气象台网顺德区预报网页
6 strHtml =requests.get(url)7 strHtml.encoding = strHtml.apparent_encoding #指定源网页编码方式作为文字解码方式
8 soup = BeautifulSoup(strHtml.text, 'lxml')9 Dict ={}10 listDate =[]11 for i in range(1, 8):12 d_date = soup.select('#day7 > div:nth-child(' + str(i) + ') > div > div:nth-child(1)') #日期
13 d_desc = soup.select('#day7 > div:nth-child(' + str(i) + ') > div > div:nth-child(3)') #日间天气
14 d_windd = soup.select('#day7 > div:nth-child(' + str(i) + ') > div > div:nth-child(4)') #日间风向
15 d_winds = soup.select('#day7 > div:nth-child(' + str(i) + ') > div > div:nth-child(5)') #日间风力
16 d_tmpH = soup.select('#day7 > div:nth-child(' + str(i) + ') > div > div:nth-child(6)') #全天高温
17 d_tmpL = soup.select('#day7 > div:nth-child(' + str(i) + ') > div > div:nth-child(7)') #全天低温
18 listDate.append(d_date[0].contents[0])19 arr = [listDate[i - 1], d_desc[0].get_text(), d_windd[0].get_text(), d_winds[0].get_text(),20 d_tmpH[0].get_text(), d_tmpL[0].get_text()]21 for j inrange(len(arr)):22 arr[j] = "".join(arr[j].split())23 Dict[listDate[i - 1]] =arr24 print(d_desc[0].get_text() + " " + d_windd[0].get_text() + " " + d_winds[0].get_text() + " " +d_tmpH[25 0].get_text() + " " +d_tmpL[0].get_text())26
27 out = open('SD_Daily_Climate_Test.csv', 'a', newline='') #设定写入模式,参数'a'代表在其后追加内容
28 csv_write = csv.writer(out, dialect='excel') #写入具体内容
29 for item inDict.values():30 csv_write.writerow(item)31 print("write over SD Daily Climate Test")
输出结果如下:
csv 保存内容如下:
参考资料
python图片分析中央气象台降水_获取中央气象台网的气象数据 全流程技术解析(python 爬虫)...相关推荐
- python图片分析中央气象台降水量预报_获取中央气象台网的气象数据 全流程技术解析(python 爬虫)...
一.Python环境搭建 下载安装python 下载安装PyCharm,Community版即可 理论上应该先安装python再安装IDE(PyCharm),必要时按网上要求进行环境变量设置. 二.爬 ...
- python爬取去哪网数据_用户观点:企查查数据爬取技术与Python 爬取企查查数据...
主体数据来源是全国工商信用网但是每个省的工商系统都不同,要针对每个省的工商系统单独写爬虫每个省的验证码也不同,也要单独做.企查查的原理不是主动爬去数据,而是有人查询该企业时,如果自己的数据库没有该企业 ...
- SANSA 上上洛可可 贾伟作品 高山流水 香炉 香插香台香具 高端商务礼品 黑色【正品 价格 图片 折扣 评论】_尚品网ShangPin.com...
SANSA 上上洛可可 贾伟作品 高山流水 香炉 香插香台香具 高端商务礼品 黑色[正品 价格 图片 折扣 评论]_尚品网ShangPin.com SANSA 上上洛可可 贾伟作品 高山流水 香炉 香 ...
- Arduino ESP32 通过getString方法获取网络时间和气象数据
Arduino ESP32-通过getString方法获取网络时间和气象数据 国家气象数据API接口:http://www.weather.com.cn/data/sk/101010100.html ...
- 【SemiDrive源码分析】【MailBox核间通信】46 - Android侧 RPMSG_IPCC_RPC驱动分析(下) 之 RPMSG_IPCC_RPC驱动初始化、数据收发流程分析
[SemiDrive源码分析][MailBox核间通信]46 - Android侧 RPMSG_IPCC_RPC驱动分析(下) 之 RPMSG_IPCC_RPC驱动初始化.数据收发流程分析 三. rp ...
- python情绪分析的意义_如何用Python和R对故事情节做情绪分析?
想知道一部没看过的影视剧能否符合自己口味,却又怕被剧透?没关系,我们可以用情绪分析来了解故事情节是否足够跌宕起伏.本文一步步教你如何用Python和R轻松愉快完成文本情绪分析.一起来试试吧. 烦恼 追 ...
- python图片自动校正流量_利用python西电流量自动查询脚本
##code # -*- coding: utf-8 -*- #!/usr/bin/python ''' name: get_pay_info function: 自动获取流量信息 lib: requ ...
- python图片识别验证码软件_基于python图片识别工具(图片识别,车牌,PDF,验证码)...
先上图 不多说. 对于一般的用户来说识别率还是能达到百分之90以上. 已经打包成exe文件.windows用户可以直接使用.要软件的加我QQ python代码: # -*- coding: UTF- ...
- python多边形的绘制教程_绘制最新:python绘制封闭多边形教程_爱安网 LoveAn.com
关于"绘制"的最新内容 聚合阅读 今天小编就为大家分享一篇python绘制封闭多边形教程,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧... 这篇文章主要介绍了P ...
- 怎么把python解释器配置在pycharm中_在PyCharm中配置项目(三):配置Python解释器...
PyCharm是一种Python IDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具.此外,该IDE提供了一些高级功能,以用于Django框架下的专业Web开发. PyCha ...
最新文章
- ARM Cortex-M嵌入式C基础编程(上)
- 刻意练习:LeetCode实战 -- Task07. 合并两个有序链表
- 使用nginx解决跨域问题
- 大量多风格多功能后台管理模板
- Python之每个人都应该知道的30个一行代码程序
- He Fei ,First ,Good Luck
- Jmeter基础使用
- 机器学习的几个误区-转载
- 单循环比赛规则-java
- 彻底格式化系统启动U盘(基于win10)
- 信道估计---LS、MMSE、LMMSE准则
- 使用apt更新和升级系统软件
- 在开发IE插件时,遇到的各种问题记录
- eplan 电箱布局_Eplan 的从头到尾完成3D布局步骤说明
- 【Android】aapt2报错:windows W/ziparchive( 2348): Unable to open ‘badging‘: No such file or directory
- 安徽新科技计算机学校是高中吗,2021最新安徽高中排名一览表 所以高中学校
- python椭圆曲线加密算法_ECC椭圆曲线加密学习笔记
- 【一】综合架构(web网站架构)
- dos2unix命令找不到怎么办
- Linux gzip gunzip(压缩与解压缩)命令