zoukankan      html  css  js  c++  java
  • 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("下载完成!")
  • 相关阅读:
    hdu 1269 迷宫城堡 (并查集)
    hdu 1272 小希的迷宫 (深搜)
    hdu 1026 Ignatius and the Princess I (深搜)
    hdu 1099 Lottery
    hdu 1068 Girls and Boys (二分匹配)
    几个基础数位DP(hdu 2089,hdu 3555,uestc 1307 windy 数)
    hdu 1072 Nightmare (广搜)
    hdu 1398 Square Coins (母函数)
    hdu 1253 胜利大逃亡 (深搜)
    hdu 1115 Lifting the Stone (求重心)
  • 原文地址:https://www.cnblogs.com/jxc321/p/7396603.html
Copyright © 2011-2022 走看看