欢迎光临散文网 会员登陆 & 注册

使用网络爬虫下载PSMSL全球月平均水位数据

2022-10-07 20:57 作者:ocean_tide  | 我要投稿

PSMSL网站如下(https://www.psmsl.org/data/obtaining/)

一共有2630个验潮站,网络下载函数用MATLAB提供的urlwrite,因为部分站点没有RLR格式的数据(基准统一格式),所以下载会报错,这里使用try,catch函数来解决这个问题。

for i=1:2360 %2360

    i

u1='https://www.psmsl.org/data/obtaining/rlr.monthly.data/';

u2='.rlrdata';

url=[u1,num2str(i),u2];

file=[num2str(i),'.txt'];

try

  [f,status]=urlwrite(url,file);

catch

  continue    

end

end


对于每个站点的名字,经纬度,我们用正则匹配的方法来获取,程序如下:

ss=urlread('https://www.psmsl.org/data/obtaining/');

s1=regexp(ss,'/stations/\d*.php','match'); %站点ID

s2=regexp(ss,'</a></p></td><td><p>\s*\S*</p></td><td><p>\s*\S*</p>','match');%站点经纬度

id=zeros(1548,3,'double');%第1列为站点id,第2列为站点纬度,第3列为站点经度

for i=1:length(s1)

  ss1=s1{i};ss2=s2{i};ss3=regexp(ss2, '\S\d*\.\d*', 'match' );

  id(i,1)=str2double(ss1(11:end-4)); 

end

for i=1:length(s1)

  ss2=s2{i};ss3=regexp(ss2, '\S\d*\.\d*', 'match' );

  id(i,2)=str2double(ss3{1});

  id(i,3)=str2double(ss3{2});

end

s3=regexp(ss,'<tr><td>.{1,40}</td><td><p>','match');

for i=1:length(s1)

   s4=s3{i};

   name{i}=s4(9:end-12); %验潮站的名字

end


使用网络爬虫下载PSMSL全球月平均水位数据的评论 (共 条)

分享到微博请遵守国家法律