python爬取ZOL壁纸,并批量下载到本地

声明:仅供参考、学习。

爬取地址:http://desk.zol.com.cn/dongwu/1920x1080/
爬取页码:1-2页
存储位置:D盘根目录

运行条件:电脑安装python 3.0+

代码:

from urllib import request,error
import re
url = "http://desk.zol.com.cn/dongwu/1920x1200/"
urls = []

urls.append(url)
for i in range(2,2):
    urls.append(url + "%r.html" % i)
###########################获取每张壁纸的页面########################
for url in urls:
    try:
        response = request.urlopen(url)         #打开页面
        byte_html = response.read()             #此时的html是'byte'类型
        html =str(byte_html)                    #转换成字符串
        pattern = re.compile(r'<a.*? href="(.*?)".*?>.*?</a>')
        imglist = re.findall(pattern,html)      #匹配<a>标签中的href地址
        truelist= []
        for item in imglist:
            if re.match(r'^\/bizhi\/',item):
                truelist.append(item)
    except error.HTTPError as e:
        print(e.reason)
    except error.URLError as e:
        print(e.reason)
    except:
        pass
#########################对每张壁纸, 获取其地址并下载到本地################################
x = 0
for wall_pager_page in truelist :
        print('-' * 40)
        print(wall_pager_page)
        url1 = "http://desk.zol.com.cn" + wall_pager_page
        response1 = request.urlopen(url1)
        byte_html1 = response1.read()
        html1 = str(byte_html1)

        pattern1 = re.compile(r'<a.*?id="1920x1080" href="(.*?)".*?>.*?</a>')
        urllist = re.findall(pattern1,html1)
        print('url1:'+urllist[0])
        html2 = str(request.urlopen("http://desk.zol.com.cn"+urllist[0]).read())

        pattern2 = re.compile(r'<img.*? src="(.*?)"')
        wallpageurl = re.findall(pattern2,html2)
        print(wallpageurl[0])
        request.urlretrieve(wallpageurl[0],"D:/%r.jpg" % x)
        x += 1

执行结果:
在这里插入图片描述

保存的图片:
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值