findpic('高山') % 直接输入搜索词,默认建立当前路径下以搜索词为名的子文件夹
path= 'C:\Users\ligon\Desktop\python\pachong\高山';
findpic('高山',path) % 输入搜索词和图片保存的路径
注意:需要根据自己的浏览器设置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 % 关闭所有的图窗
a. 读取原网站脚本
b. 搜集脚本中的图片原网址
c. 逐个访问图片原网址,保存图片
额外说明:该程序大概能保存40张以内的图片,如果需要更多张图片,需要对程序进行更改,增加网页下拉的操作。