13行MATLAB代码实现网络爬虫 爬取NASA画廊星图


2021/04/18​上传

2021/04/21更新:修改N的输入方式,增加对png格式图片的下载支持,增加了自动处理几种错误情况的代码,能够将下载过程与报错记录保存到日志中。

源代码

N = input('Input the number you want to download:');URL = 'https://www.nasa.gov/api/2/ubernode/_search';
mainURL = 'https://www.nasa.gov/sites/default/files/';
opt = weboptions('Timeout',10);
for i=1:Ndata = webread(URL,'size',num2str(N),'from','0','sort','promo-date-time:desc','q','((ubernode-type:image) AND (routes:1446))','_source_include','promo-date-time,master-image,nid,title,topics,missions,collections,other-tags,ubernode-type,primary-tag,secondary-tag,cardfeed-title,type,collection-asset-link,link-or-attachment,pr-leader-sentence,image-feature-caption,attachments,uri',opt);imgURL = append(mainURL,data.hits.hits(i).x_source.master_image.uri(10:end));img = webread(imgURL,opt);filename = append('Img_',num2str(i),'_',data.hits.hits(i).x_source.master_image.title,'.jpg');imwrite(img,filename);disp(append('FINISHED:',num2str(i),'/',num2str(N)));
end
disp('Completed!');

使用方法

.m脚本文件所在路径添加到MATLAB路径中,运行脚本,命令行提示:Input the number you want to download:,输入你想下载的图片数量后,爬虫自动开始运行并显示进度,进度读完则显示Completed!,图片保存在脚本所在目录下。

讲解

本爬虫仅适用于爬取NASA画廊每日图片,但只要取得了图片链接,用此方法可以爬取其他更多网站。

https://www.nasa.gov/multimedia/imagegallery/iotd.html使用F12中Network工具,可以抓取到网页获取图片信息的网址接口URL,它的参数由几个部分组成,其中size对应一次获取的图片数量,则可通过变更size来获得不同的图片数量。

URL的响应中,包含我们要获取的图片链接的一部分,即uri

通过mainURLuri(10:end)组合可以得到不同编号的图片链接,使用webread()函数读入即可。

weboption()函数用于设置访问方式为Get与超时响应时间Timeout

append()合并字符串,imwrite()将图片写入指定文件并重命名。

via nasa.gov


2021/04/21更新:修改N的输入方式,增加对png格式图片的下载,增加了自动处理几种错误情况的代码,能够将下载过程与报错记录保存到日志中。

2021/04/21源代码:

disp('Input the number you want to download:[N1-N2]');
N1 = input('N1:');
N2 = input('N2:');
disp(append('From ',num2str(min(N1,N2)),' to ',num2str(max(N1,N2)),' There are ',num2str(max(N1,N2)-min(N1,N2)+1),' pictures.'));
URL = 'https://www.nasa.gov/api/2/ubernode/_search';
mainURL = 'https://www.nasa.gov/sites/default/files/';
opt = weboptions('Timeout',10);
ispng=1;
path = 'F:\PictureDownload\PictureDownload';
for i=min(N1,N2):max(N1,N2)trydata = webread(URL,'size',num2str(i),'from','0','sort','promo-date-time:desc','q','((ubernode-type:image) AND (routes:1446))','_source_include','promo-date-time,master-image,nid,title,topics,missions,collections,other-tags,ubernode-type,primary-tag,secondary-tag,cardfeed-title,type,collection-asset-link,link-or-attachment,pr-leader-sentence,image-feature-caption,attachments,uri',opt);catchdisp('[ERROR]Failed to connect to the website. Check your web connection.');breakendimgURL = append(mainURL,data.hits.hits(i).x_source.master_image.uri(10:end));tryimg = webread(imgURL,opt);catchdisp(append('[WARN]Failed to download the ',num2str(i),'th picture. It has been skipped up.'));disp(append('[LINK]',imgURL));i = i+1;continueendfilename = append(path,'Img_',num2str(i),'_',data.hits.hits(i).x_source.master_image.title,'.jpg');tryimwrite(img,filename);disp(append('[',num2str(i),']FINISHED:',num2str(i-min(N1,N2)+1),'/',num2str(max(N1,N2)-min(N1,N2)+1)));catchfilename = append(path,'Img_',num2str(i),'_',data.hits.hits(i).x_source.master_image.title,'.png');tryimwrite(img,filename);catchispng=0;endif ispng==1disp(append('[WARN]The ',num2str(i),'th picture is the format of png, it has been download successfully.'))elsedisp(append('[WARN]Failed to write in img file, The No.',num2str(i),' picture has been skipped up.'));disp(append('[LINK]:',imgURL));i = i+1;endend
end
disp('Completed!');

13行MATLAB代码实现网络爬虫 爬取NASA画廊星图相关推荐

  1. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  2. python朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  3. python抓取朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)...

    原标题:如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下) 前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往 ...

  4. 用python网络爬虫爬取英雄联盟英雄图片

    用python爬虫爬取lol皮肤. 这也用python网络爬虫爬取lol英雄皮肤,忘了是看哪个大神的博客(由于当时学了下就一直放在这儿,现在又才拿出来,再加上马上要考二级挺忙的.),代码基本上是没改, ...

  5. python网络爬虫_Python网络爬虫——爬取视频网站源视频!

    原标题:Python网络爬虫--爬取视频网站源视频! 学习前提 1.了解python基础语法 2.了解re.selenium.BeautifulSoup.os.requests等python第三方库 ...

  6. python如何爬虫网页数据-python网络爬虫爬取网页内容

    1.什么是网络爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自 ...

  7. 网络爬虫爬取拉勾招聘网

    网络爬虫爬取拉勾招聘网 搭配好环境 复制以下代码 # -*- coding: utf-8 -*- """ Created on Mon Sep 7 21:44:39 20 ...

  8. python网络爬虫——爬取嗅事百科

    网络爬虫 - 爬取嗅事百科 爬取过程分三大步: 一,请求,获取网页源码 url为:url =' https : //www.qiushibaike.com/8hr/page/'+ str(page)先 ...

  9. 网络爬虫爬取淘宝页面商品信息

    网络爬虫爬取淘宝页面商品信息 最近在MOOC上看嵩老师的网络爬虫课程,按照老师的写法并不能进行爬取,遇到了一个问题,就是关于如何"绕开"淘宝登录界面,正确的爬取相关信息.通过百度找 ...

最新文章

  1. Silverlight入门:第三部分 - 数据访问
  2. 为什么说,我们可能是宇宙中唯一的智慧生命?
  3. JDK源码解析 —— IO流中的包装类使用到了装饰者模式
  4. linux命令冒号加叹号,Linux中的叹号命令
  5. SpringBoot_日志-SpringBoot默认配
  6. 如何使 WebAPI 自动生成漂亮又实用在线API文档
  7. c语言让电脑发出滴滴声代码,centos命令行控制电脑发出滴滴声——使用beep把警告变为music...
  8. silverlight动态创建WCF服务
  9. 作者:孔新川,杭州迈宁数据科技有限公司创始人、CEO。
  10. BZOJ——2134: 单选错位
  11. Qt在线/离线安装包下载网址和说明
  12. [python][os]分离文件目录,文件名以及文件后缀
  13. 【转】 sqlserver 异地备份
  14. 高通设备找不到连接QXDM的端口
  15. NestedScrollView与Viewpager滑动冲突
  16. linux怎么查看hwaddr_怎么查询linux centos mac地址
  17. 为什么amd显卡便宜却买的人少_为什么不推荐人选择AMD?
  18. 记录vultr搭建https爬虫代理
  19. 【计算机·科技】互联网的黑科技来啦
  20. 多文件断点续传,上传视频自动转MP4和截图,图片格式转换

热门文章

  1. 秦朔-王坚:不理解在线,就没有真懂互联网
  2. 新手如何选择外汇交易平台?
  3. LDA主题模型及案例
  4. afterlogic webmail lite php,AfterLogic WebMail最新版任意文件包含 | CN-SEC 中文网
  5. 成功解决Solving environment: failed with initial frozen solve. Retrying with flexible solve.
  6. H3C防火墙web管理
  7. 软考 - 软件设计师 - 下午-案例分析 做题技巧与考点整理
  8. 25.优化算法4:求解信赖域子问题及其收敛性
  9. ueditor 图片上传 java_Spring+Vue整合UEditor富文本实现图片附件上传的方法
  10. PLM学习笔记(1)- JT2Go简介