• python3爬取高清壁纸(2)


    上次只是爬取一个专辑的图片,这次要爬取一整个页面的所有专辑的图片。

    在上次的代码的基础上进行修改就行了,从专辑的索引页面开始,爬取该页面上所有的专辑的链接,再套用上次的代码就行了。

    若要爬取多个页面只需在外围套上一个循环就可以了。

    代码如下:

    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("下载完成!")
  • 相关阅读:
    Hive初识(一)
    图解HTTP总结(8)——确认访问用户身份的认证
    Android 7.0 照相 FileUriExposedException
    activity跳转的一些坑
    gopath配置
    android项目中记录
    一些趣味性总结(JAVA)
    http的response遇到illegalstateexception解决办法
    django demo
    Error:Execution failed for task ':app:transformClassesWithDexForDebug'解决方法
  • 原文地址:https://www.cnblogs.com/jxc321/p/7396603.html
Copyright © 2020-2023  润新知