python定向爬取wallhaven壁纸

首先,大神自觉绕道。。。。

以下正文

最近刚学python,突然想做个爬取壁纸的小demo

我这里爬取的是wallpaper上的一些图片,网址如下
https://alpha.wallhaven.cc/

进入wallpaper后我们随机点击一张图片

查看多次后很容易就联想到末尾的数字和图片名有关

接下来查看一下源码
python定向爬取wallhaven壁纸_第1张图片

通过查看多个图片,发现这些图片基本都以jpg和png为后缀,
于是用正则匹配pattern=r’//wallpapers.+?(jpg|png)’

(很烂的正则。。。我知道)

接下来就可以直接用一个for循环遍历图片所在的网页
并将其存储下来啦

程序运行效果如下:

python定向爬取wallhaven壁纸_第2张图片
完整代码如下:

import requests
import re
import os
def getImg(n):
    url='https://alpha.wallhaven.cc/wallpaper/'    #图片对应的网站
    pattern=r'//wallpaper.+?(jpg|png)'    #匹配图片的正则
    path='D:/Mypicture'    #图片存储路径
    for i in range(n):
        r=requests.get(url+str(i+1))
        r.encoding=r.apparent_encoding
        mattch=re.search(pattern,r.text)
        if mattch:
            img=requests.get("https:"+mattch.group(0))
            if(not os.path.exists(path)):   #保存图片的路径不存在则创建
                os.mkdir(path)
            if(img.url.endswith('.jpg')):   #不同格式的图片
                with open('D:/Mypicture/t'+str(i+1)+'.jpg','wb') as f:
                    f.write(img.content)    #将图片保存到本地
                    f.close()       
            elif (img.url.endswith('.png')):
                with open('D:/Mypicture/t'+str(i+1)+'.png','wb') as f:
                    f.write(img.content)
                    f.close()
            else:
                print('爬取失败,图片后缀为:'+img.url[-4:])
            print('第'+str(i+1)+'次爬取\t成功!')
        else:
            print("第{}次爬取\t失败!".format(i+1))

def main():
    getImg(20)    #这里仅爬取20张图片
main()

本人纯属新手
程序可能不是很完美,但希望对您有帮助,有不足之处也欢迎指出,谢谢各位

你可能感兴趣的:(随心)