matlab:实现“必应”的图片搜索功能并将图片保存

目录

  • 1. 输入
    • 1.1 形式1
    • 1.2 形式2
  • 2. 输出
  • 3. 源代码
  • 4. 原理简述

1. 输入

1.1 形式1

findpic('高山') % 直接输入搜索词,默认建立当前路径下以搜索词为名的子文件夹

1.2 形式2

path= 'C:\Users\ligon\Desktop\python\pachong\高山'; 
findpic('高山',path) % 输入搜索词和图片保存的路径

2. 输出

3. 源代码

注意:需要根据自己的浏览器设置UserAgent(以“浏览器名+查看UserAgent”为关键词搜索自己浏览器的UserAgent),文中使用的是谷歌浏览器。

function findpic(research,path)

%% 搜索的关键词
% 例如:research = '橘子';  % 可以直接输入中文、英文、日文等各国家的语言

%% 关键词转换为网址
research_16 = dec2hex(unicode2native(research,'UTF-8'));
Input = '';
for i = 1:size(research_16,1)
    Input = [Input,'%',research_16(i,:)];
end
httpsUrl = ['https://cn.bing.com/images/search?q=',Input,'&form=HDRSC2&first=1&tsc=ImageHoverTitle'];

%% 设置选项
UserAgent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36';
options = weboptions('UserAgent',UserAgent,'Timeout',1);

%% 爬取数据
data = webread(httpsUrl,options);

%% 匹配图片的原网址
index = strfind(data,'murl":"');
address = {};
for i = 1:size(index,2)
    s = '';
    m = 1;
    st = 0;
    while st ~= 1
        s = [s,data(index(i)+16+m)];
        m = m + 1;
        if m > 6 && (strcmpi(s(1,end-3:end),'.jpg') || (strcmpi(s(1,end-4:end),'.JPEG'))  ||  (strcmpi(s(1,end-3:end),'.png')))
            st = 1;
            address(end+1,1) = {s};
        end
    end
end

%% 如果未输入路径,在当前目录下创建子文件夹
if nargin==1
    Name_Newfolder = research;             % 将图片放到该文件夹下
    mainpath = pwd;                        % 获得当前路径
    path = [mainpath,'\',Name_Newfolder];  % 文件夹路径
end
if ~exist(path,'dir')                      % 如果不存在该文件夹,则创建
    mkdir(path);
end

%% 保存图片到子文件夹
m = 0;
set(0,'DefaultFigureVisible', 'off')          % 不让imshow显示图片
for i = 1:size(address,1)
    try
        figure(i)
        pic = webread(address{i,1},options);
        pic = imshow(pic);
        m = m+1;
        eval(['saveas(pic,"',path,'\',num2str(m),'.png")'])
        disp(['√√√:第',num2str(i),'张图片已经保存到 ',path]);
    catch 
        disp(['×××:第',num2str(i),'张图片无法显示:',address{i,1}]);
    end
end
set(0,'DefaultFigureVisible', 'on')          % 恢复imshow的显示
close all                                    % 关闭所有的图窗

4. 原理简述

a. 读取原网站脚本
b. 搜集脚本中的图片原网址
c. 逐个访问图片原网址,保存图片

额外说明:该程序大概能保存40张以内的图片,如果需要更多张图片,需要对程序进行更改,增加网页下拉的操作。

你可能感兴趣的:(matlab编程,保存网站图片,matlab,开发语言)