上次只是爬取一个专辑的图片,这次要爬取一整个页面的所有专辑的图片。
在上次的代码的基础上进行修改就行了,从专辑的索引页面开始,爬取该页面上所有的专辑的链接,再套用上次的代码就行了。
若要爬取多个页面只需在外围套上一个循环就可以了。
代码如下:
import requests import re from bs4 import BeautifulSoup import os #爬取的网站:http://www.win4000.com/wallpaper_detail_54520.html def Get_image_url(url): #传入页面的URL,得到所有图片所在的标签和图册的名字,并返回 Res = requests.get(url) Soup = BeautifulSoup(Res.text,'lxml') Name = Soup.select('h1')[0].string Tag = 'img[title="' + Name + '"]' Image = Soup.select(Tag) return Image,Name def Download_Image(Image_url): #传入图片的URL,将图片保存在本地 Image = requests.get(Image_url,stream=True) #将链接的最后一个字符串最为图片的名字 name = Image_url.split('/')[-1] #白村图片 with open(name,'wb') as f: f.write(Image.content) def Get_index_image(Url): Res = requests.get(Url) Reg = r'<a href="(.+?)" title=.+? target=' Reg = re.compile(Reg) Image = re.findall(Reg,Res.text) Image = set(Image) Image = [i for i in Image if len(i) > 49] return Image def main(url): #主调函数 #url = "http://www.win4000.com/wallpaper_detail_54520.html" [Image,Name] = Get_image_url(url) #print(Name,Image) #保存当前目录 path = os.getcwd() #创建保存图片的目录 if (not os.path.exists(Name)): os.mkdir(Name) os.chdir(path + '/' + Name) for I in Image: Download_Image(I['src']) #返回之前的目录 os.chdir(path) print(Name+' ') else: print(Name + " 已经下载过了") if __name__ == '__main__': Main_Url = "http://www.win4000.com/wallpaper_192_0_0_1.html" Url = Get_index_image(Main_Url) for u in Url: main(u) print("下载完成!")