学习记录--Python爬取网络数据

刚开始对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)     

水平有限,表达不清楚之处敬请谅解!有更好的方法欢迎交流

最后展示一下,下载的文件
学习记录--Python爬取网络数据_第1张图片

你可能感兴趣的:(##,Python遥感数据处理,python,学习,爬虫)