简介
本项目是本人检验python爬虫学习成果的一个小项目,简陋但能用,对壁纸有不同需求的可自行更改搜索参数,希望能帮到爬虫爱好者或者壁纸爱好者,爬取的所有图片均来源于wallhaven,仅用于个人欣赏和非商业用途,完整代码附在最后。
最终成果
前期准备
import requests
import urllib
import re
import time
import urllib3
//去除运行时控制台的警告
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
分析网页
网页结构
搜索页:每页24个条目 ==》 条目页:提取图片链接 ==》 图片链接:保存
构造url
#搜索参数
key = ""
cat = "100"#General/Anime/People
pur = "100"#SFW(100)/Sketchy(010)
sort = "toplist"#Relevance/Random/Data Added/Views/Favorites/Toplist/Toplist Beta
order = "desc"#asc/desc
topRange="3d"#1d/3d/1w/3m/1y
url = url+key+'&categories='+cat+'&purity='+pur +'&sorting='+sort+'&order='+order+'&page='+page
构造正则表达式
linkPat = '<a class="preview" href="(.*?)" target="_blank" >'
wallpaperPat = '<img id="wallpaper" src="(.*?)"'
编写过程
思路
一个外循环遍历每一页,从搜索页提取出各图片条目页的链接
一个内循环遍历该页提取出所有的条目,访问从各自条目中获取的图片源地址,保存图片
https的验证问题
遇到的第一个问题,由于壁纸网站采用了https加密协议,需要ssl证书认证,此时将请求头的verify属性值设为false就可以了
data1 = requests.get(url=url,headers=headers,verify=False)
在过程运行中会出现warning信息,办法是关闭InsecureRequestWarning
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
文件的保存
创建文件夹
设置时间戳自动创建文件夹,避免多次保存的图片相互覆盖
#文件夹创建函数
def mkdir(path):
# 引入模块
import os
# 去除首位空格
path=path.strip()
# 去除尾部 \ 符号
path=path.rstrip("\\")
# 判断路径是否存在
# 存在 True
# 不存在 False
isExists=os.path.exists(path)
# 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(path)
print <