《爬虫爬 wallhaven.cc壁纸》

##爬虫爬取网页壁纸

在校生,最近学了学爬虫,自己尝试着写了一个关于爬网页壁纸的爬虫代码、话不多说,直接上代码
(这个网页的壁纸都是超好看和高清的,真的很不戳)

 #-*- codeing = uft-8 -*-
#@Time :2021/4/12 21:20
#@file : SpiderWallhaven.py
'''代码爬取的是"https://wallhaven.cc/toplist?page=1"网页
关于15行正则表达式解析的是每张图片的源地址,(不去解析图片的源地址将得到每张图片的缩略图
只有解析它们的源地址,开展以下的爬取工作就交给循环)
'''
import re,requests
count=0#计数
for tes in range(1,3,1):#爬取目标的页数,步长为1,本次实验为2页
    url = "https://wallhaven.cc/toplist?page=%d"%tes#page=?根据规律发现是从1迭代的,这里用占位符
    result = requests.get(url)#生成请求
    # print("Wallhaven响应码:",result.status_code)#这里查看的是你访问每一页的状态码,200表正常
    response = re.compile('class="preview" href="(.*?)"')#正则表达式去解析图片源地址
    ress = re.findall(response, result.text)#图片地址
    # print(ress)
    list = []#创建一个列表
    num = 0#计数,可查看一页有多少图片和连接
    for i in ress:#利用for循环将ress中的连接遍历出来
        # print("第%d个连接:%s"%(num,i),end="\n")#利用循环输出可知这一页有23个连接和对应的图片
        num += 1
        list.append(i)#把遍历出来的i储存在list中
    for ll in range(0, 24, 1):#
        furl = requests.get(list[ll])
        srcad = re.compile('id="wallpaper" src="(.*?)"', re.S)#正则表达式解析每个网页的图片信息
        resultd = re.findall(srcad, furl.text)
        for i in resultd:
            resld = requests.get(i)
        with open('Wallhaven/%d.jpg' % count, 'wb') as f:
            f.write(resld.content)
            print("Have downloaded %d 张..."%count)
        count += 1

《爬虫爬 wallhaven.cc壁纸》_第1张图片
《爬虫爬 wallhaven.cc壁纸》_第2张图片

可能写的比较繁琐,代码旁边的注释可能表达的意思不太好,希望大家可以看懂,可以找出其中的错误和我交流。
其实用def()函数写会简略很多

你可能感兴趣的:(笔记,爬虫,python,爬虫,正则表达式)