刚开始对Python一无所知,因此在B站上看了老师的视频课程,
https://www.bilibili.com/video/BV1ha4y1H7sx?p=1&vd_source=934e28df3e8d67b96fafa58bd1be71bc
没有完全看完,但能够解决我的问题,后面有时间再继续学习。将学习过程整理如下
目标任务描述
我这里是想从这个网站(https://www.star.nesdis.noaa.gov/socd/moby/filtered_spec/)上下载所有的好的数据,也就是绿色标注的数据。然而,因为数量很多,有几千条,因此需要使用Python自动提取绿色标注的光谱数据,并保存到本地的txt中。
前期准备
Python爬虫需要安装几个功能包,包括:requests,bs4等,安装比较简单,可以自行搜索。
解决过程
# 先导入工具包
import requests
import os
from bs4 import BeautifulSoup as bs
if __name__=='__main__':
# 创建文件保存的文件夹
if not os.path.exists('./MOBY_origin_files'):
os.mkdir('./MOBY_origin_files')
#文件下载的url
url = 'https://www.star.nesdis.noaa.gov/socd/moby/filtered_spec/'
# 利用requests.get对url发送请求
page_text = requests.get(url=url).text
# 这里采用BeautifulSoup对编码进行解析
soup = bs(page_text,'lxml')
#将解析结果利用find_all函数查找所有li记录,因为我这里的数据保存在li里面
li_list = soup.find_all('li')
#然后利用for循环对每个li进行判断(是否为绿色数据),请求,解析,保存到本地等操作
for li in li_list:
#find good specra, '#007100'为绿色
if li.a.font['color']=='#007100':
# 保存每条数据的名称作为本地文件保存的名字
title = li.a.string
# 构建每个li中的url,也就是每条光谱数据的下载链接
detail_url = 'https://www.star.nesdis.noaa.gov/socd/moby/filtered_spec/'+li.a['href']
# 继续发送请求
detail_page_text = requests.get(detail_url).text
# detail_soup = bs(detail_page_text,'lxml')
# content = detail_soup.find('div').text
# content = detail_soup.pre.text
# detail_page_text中就是想要的光谱数据,因此直接保存
with open(os.path.join('./MOBY_origin_files',title+'.txt'),'w',encoding='utf-8') as fp:
fp.write(detail_page_text)
水平有限,表达不清楚之处敬请谅解!有更好的方法欢迎交流
最后展示一下,下载的文件