解释都在代码里,方便看和理解
注意:正则表达式那里,因为我找的网站,里面的图片资源都有个_upload的前缀,所以就可以直接用作匹配的条件,具体匹配要看你所爬的网站,它的图片资源有怎样的规律,这样方便匹配
import urllib.request;
import re;
class GetURLImage:
def __init__(self , URL , HEAD):#初始化
self.url = URL;
self.head = HEAD;
def getHtml(self):#获取html页面数据
self.request = urllib.request.Request(self.url);#设置请求的url
self.request.add_header("user-agent" , self.head);#设置请求头
self.response = urllib.request.urlopen(self.request);#发送请求信息
return self.response.read();#获取html页面数据
def getList(self):
self.strimglist = [];
#/_upload/tpl/00/20/32/template32/images/logo.png
#正则表达式匹配图片路径 ,二进制格式
self.imglist = re.findall(b"_upload/.*.png" , self.getHtml());
#将域名与图片在服务器上的路径进行拼接,形成图片的请求路径,就可以直接访问服务器资源
for i in self.imglist:
self.strimglist.append(self.url + str(i , encoding="utf8"));
return self.strimglist;
def getImage(self):
num = 0;
filename = "./image/";
for self.url in self.getList():
num += 1;
#文件写操作,将服务器上的图片资源下载到image文件夹中,请提前创建image文件夹
with open(filename + str(num) + ".png" , "wb") as f :
f.write(self.getHtml());
url = "可以自己到网上找网址";
head = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36";
html = GetURLImage(url , head);
#print(html.getList());
#print(html.getHtml());
html.getImage();
print("完成!!!");
还可以想想深度爬网页,后面有时间在写