python爬必应网站的图片

本文介绍了一个使用Python爬虫技术下载必应每日壁纸的实战案例。通过解析网页源代码,利用正则表达式截取大图地址,并通过requests库实现图片的批量下载。代码中详细展示了如何设置User-Agent,处理文件路径,以及异常捕获。

效果图片:

在这里插入图片描述
在这里插入图片描述

完整代码:

每段代码的功能都有注释

import re
import os
import time
import requests
from bs4 import BeautifulSoup

#获取大图地址并下载
def geturl(url):
    user_agent = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'}
    rspon = requests.get(url,headers = user_agent)  #url这个变量是由函数page()传入
    htmltext = rspon.text    #网页源代码

    list_a = re.findall(r'(?<=pic=).*?(?=\?imageslim)',htmltext)  #  (?<=)表示开始界定  *?表示最小匹配  (?=)表示结束界定   由于?是系统保留字,所以在?imageslim前加转义符\ 
    #用正则表达式截取【pic=】与【?imageslim】之间的字符,这是图片的地址。 htmltext里面有许多pic=http://h1.ioliu.cn/bing/LakeMoraineVideo_ZH-CN5910090911_1920x1080.jpg?imageslim
   
    #循环保存图片    
    for L in list_a:
        time.sleep(1)   #间隔时间1秒            
        filename = L.split('/')[-1]     #以‘/’为分隔进行切片,取右边第1组字符,用作图片的文件名
       
        savepath = 'd://pyimg2//'    #保存路径
        imgname = savepath + filename  #文件名
            
        try:
            if not os.path.exists (savepath):   #如果目录不存在
                os.mkdir (savepath) #创建目录
                    
            if not os.path.exists  (imgname):   #文件名不存在,才进行下载
                r = requests.get(L,headers = user_agent)    #请求图片地址               
                with open(imgname ,'wb') as f:   #打开文件 , wb表示二进制
                    f.write(r.content)  #写入文件
                    print(L + '    下载完成')
        except:
            print('保存出错了')


#定义下载页面函数
def page():
    s = int(input('请输入开始页码:'))
    e = int(input('请输入结束页码:'))
    
    #循环调用 geturl函数
    for i in range(e-s+1):        
        geturl('https://bing.ioliu.cn/?p=%d'%(s))   #调用函数geturl(url) ,传入参数是页面的网址
        s = s + 1


if __name__ == '__main__':

    page()  #调用page()函数

网页分析

每页有12张小图 ,https://bing.ioliu.cn/?p=3 这个数字代表第3页
在这里插入图片描述
用变量s代表页码
用变量代表页码

查找大图的下载地址
在这里插入图片描述
在这里插入图片描述
用正则表达式截取网址是重点,也是难点,具体内容要查看 re正则表达式 教程
https://blog.csdn.net/Eastmount/article/details/51082253
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值