##爬虫爬取网页壁纸
在校生,最近学了学爬虫,自己尝试着写了一个关于爬网页壁纸的爬虫代码、话不多说,直接上代码
(这个网页的壁纸都是超好看和高清的,真的很不戳)
#-*- 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
可能写的比较繁琐,代码旁边的注释可能表达的意思不太好,希望大家可以看懂,可以找出其中的错误和我交流。
其实用def()函数写会简略很多