前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MATLAB实现《地球物理学报》文章自动下载

MATLAB实现《地球物理学报》文章自动下载

原创
作者头像
传愿
修改2020-04-07 18:01:01
1K0
修改2020-04-07 18:01:01
举报
文章被收录于专栏:用户6451966的专栏

简介

由于《地球物理学报》每一篇文章都有一个专门的链接,官网可以点击下载按钮免费下载,所以网页解析下载地址和可以实现自动下载。以最新一期(2020年4月第63卷 第4期)为例,利用网页信息读取自动下载当期文献,方便阅读与检索。

实现原理

通过webread函数解析网页编码,利用字符串处理函数过滤网页源码不相关的字符串,找到每篇文章的下载地址,再用urlwrite函数保存文件到指定的路径。

主要使用到以下5个函数,实现网页信息读取解析、字符串查找定位与替换、新建保存路径、文件保存等。函数详细使用说明请自行查阅,使用方式:doc function.m

代码语言:javascript
复制
doc webread
  • webread--------网页信息读取
  • regexp --------字符串查找
  • regexprep ------字符串寻找替换
  • mkdir --------创建文件夹目录
  • urlwrite -----文件输出保存

代码分享

代码语言:matlab
复制
url = 'http://www.geophy.cn/CN/volumn/home.shtml';    % 学报官网
PaperDir = 'D:\Paper\Geophy\';                        % 保存路径
if ~exist(PaperDir, 'dir')                            % 目录不存在则创建目录
    mkdir([PaperDir Djq]); 
end
url1 = 'http://www.geophy.cn/CN/';
S = webread(url);
s1 = regexp(S,'目次[');
Djq = S(s1 - 16 : s1 - 2);                            % 目前为第几期
T1 = 'title=复制索引 onClick="javascript:Copylist';
T2 = 'href="../article/downloadArticleFile';
s2 = regexp(S,T1);
s3 = regexp(S,T2);
NumPaper = length(s2);                                % 本期文章数量
disp(['=====《地球物理学报》' Djq '文章 自动下载...']);

%% 
% 完整代码邮件发送"DownLoadGeophy"自动获取,jlubob@foxmail.com
%%

disp(['====一共用时:' sprintf('%.1f', toc/60) ' 分钟!']);

代码运行信息:

代码语言:matlab
复制
>> url = 'http://www.geophy.cn/CN/volumn/home.shtml';    % 学报官网
>> PaperDir = 'D:\Paper\Geophy\';  
>> DownLoadGeophy(url, PaperDir)
=====《地球物理学报》2020年4月第63卷 第4期文章 自动下载...
==正在下载:2020年4月第63卷第4期目次.pdf
==正在下载:NOAA系列卫星高能粒子数据一致性统计分析.pdf
==正在下载:大尺度场向电流及其与单色极光电子的联系——Swarm卫星观测.pdf
==正在下载:利用半参数核估计法预报全球电离层总电子含量.pdf
==正在下载:曲靖非相干散射雷达电离层F区日间电子温度变化特征初步分析.pdf
==正在下载:场向电流极性和密度异常事件统计研究.pdf
...
==正在下载:含裂隙介质中的视电阻率各向异性变化.pdf
==正在下载:饱和岩石的动态渗透率和动电耦合系数解析式.pdf
==正在下载:逆时偏移在声反射成像测井中的应用方法研究.pdf
==正在下载:大斜度井·水平井随钻方位电磁波测井资料实时反演方法.pdf
====一共用时:11.6 分钟!
>>

下载到本地
下载到本地

总结

MATLAB实现网页信息抓取比较简单。用到的函数全部为系统函数。下载速度和程序运行时间主要依赖于每篇文章保存到本地的速度。由于部分文章名称含有“\”等特殊字符串,直接保存时会当作路径分隔符,所以在代码中用“·”做了替换。通过找到每一期链接的命名规则,还可实现更多期的下载。甚至把所有的文章都下载下来。。就是不知道会不会被拉黑。。。。。。

另外,MATLAB还能实现网页自动填表,编目系统目录自动填表下载,观测报告自动下载功能,等等。一系列好玩的功能正在开发中。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 实现原理
  • 代码分享
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档