首先,大神自觉绕道。。。。
以下正文
最近刚学python,突然想做个爬取壁纸的小demo
我这里爬取的是wallpaper上的一些图片,网址如下
https://alpha.wallhaven.cc/
进入wallpaper后我们随机点击一张图片
查看多次后很容易就联想到末尾的数字和图片名有关
接下来查看一下源码
通过查看多个图片,发现这些图片基本都以jpg和png为后缀,
于是用正则匹配pattern=r’//wallpapers.+?(jpg|png)’
(很烂的正则。。。我知道)
接下来就可以直接用一个for循环遍历图片所在的网页
并将其存储下来啦
程序运行效果如下:
完整代码如下:
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()
本人纯属新手
程序可能不是很完美,但希望对您有帮助,有不足之处也欢迎指出,谢谢各位