大家好,我是36度道,人生苦短,我用python !

今日目标:批量下载wallhere网站上的壁纸

目标网址:https://wallhere.com/zh/wallpapers

首页图:

按 F12 查看网页源代码,搜索img标签,可以看到现在有120张图片

如果想要更多的图片,需要往下拉,网页会自动往下加载新的图片


为了截这张图,拉了老长了…现在加载到了240张图片

也就是说 只有执行了“下拉”这个操作,才会加载出新的图片。这时,就不能单纯地从网页源代码中采集了,因为它是通过ajax动态加载的数据。

所以要先找到这些加载的新图片是通过什么请求而加载到网页上的

打开“开发者工具”,边往下拉,边看 network 的 Fetch/XHR 里发送了什么请求。

结果发现,新的图片的源代码保存在https://wallhere.com/zh/wallpapers?page=2&format=json这个请求下,该请求返回的是一个json数据,可以通过json()方法获取。其中源代码保存在data 这个key下


找到了图片的存储路径就好办了

现在看下这个请求的请求方式和参数信息

发现是get请求,并且可传入两个参数,分别是page和format

page表示页数,每下拉加载新数据时,page就会加1。所以我们可以通过翻页来实现“下拉”的动作

format在这应该表示返回的格式是json吧, 照着写上去就完事,不写可能也行,自行尝试

ok,准备工作已完成,接下来直接上代码

import requestsimport timefrom bs4 import BeautifulSoupheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'}# 用来计数并作为图片名称
count = 0# 获取前5页的图片
for page in range(1, 6):url = "https://wallhere.com/zh/wallpapers?page=%s&format=json" % page# 使用json()将字符串转化为json格式,并获取源代码json_data = requests.get(url, headers=headers).json()['data']# 创建一个BeautifulSoup对象,用来解析源代码document = BeautifulSoup(json_data, 'html.parser')# 获取源代码中所有的img标签img = document.select('img')for i in img:# 获取图片的链接img_url = i['src']# 下载图片,图片需要用content属性获取二进制数据content = requests.get(img_url, headers=headers).content# 将图片保存到本地with open(r'D:\桌面整理\8-壁纸\%s.png' % count, 'wb') as f:f.write(content)count += 1# 记住访问速度不要过快,对对方服务器造成压力time.sleep(1)time.sleep(1.5)

效果图如下:

现在 我又有了很多新的壁纸可以用了~O Ye

客官,来了就点个赞呗?

爬虫|wallhere壁纸批量下载相关推荐

  1. Python爬虫 - wallhaven任意页面下的壁纸批量下载

    基于Python 任意页面下的壁纸批量下载 github Maxpagenum 爬取页数 fpath 保存路径 url 基础地址 import requests import re import ti ...

  2. Python实现壁纸批量下载

    Python实现壁纸批量下载 最近想要一些新的壁纸,但是从网站上面找一张一张下载太慢了,所以写了个爬虫批量下载壁纸. 先看看实现的效果 需要的包: requests.bs4 .os.re 源码: # ...

  3. Python爬虫——利用Scrapy批量下载图片

    Python爬虫--利用Scrapy批量下载图片 Scrapy下载图片项目介绍 使用Scrapy下载图片 项目创建 项目预览 创建爬虫文件 项目组件介绍 Scrapy爬虫流程介绍 页面结构分析 定义I ...

  4. python爬虫之壁纸的下载

    python爬虫之壁纸的下载 好久没有写博客了,暑假这段时间在学校里面忙着写小论文,没机会写我最喜欢的爬虫了(虽然很简单,但架不住哥喜欢...) 好了,废话不多说了,开始把 本次爬虫爬取的是 手机壁纸 ...

  5. 使用python实现高清壁纸批量下载

    一.高清壁纸批量下载 1.概述 此代码是使用python多线程批量下载高清壁纸的一个小脚本,代码略为简陋. 此代码仅供学习与交流,请不要用于违法用途. import requests from lxm ...

  6. 虾米音乐爬虫实战分析 批量下载虾米音乐到本地

    刚开始我是奔着抓API的,发现翻页的参数不好找,后来看到搜索出来的歌曲都存在当前url中,翻页只需更换浏览器中的url参数即可:https://www.xiami.com/list?page=1&am ...

  7. python代码壁纸-python实现壁纸批量下载代码实例

    前言 好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python.这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸. 注意:本文所属项目仅用 ...

  8. python代码壁纸-70行python代码实现壁纸批量下载

    前言 好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python.这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸. 注意:本文所属项目仅用 ...

  9. wallpaper代码_70 行 python 代码实现壁纸批量下载!

    好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python.这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸. 注意:本文所属项目仅用于py ...

最新文章

  1. 拒绝了我们的连接请求_职场上,我们该如何巧妙而优雅的拒绝同事忙的请求呢?...
  2. 如何查看外网ip_内网ip和外网ip的联系以及连接过程
  3. wxWidgets:wxStdOutputStream类用法
  4. 如此智能的Windows Embedded Standard 7
  5. 作者:曹建峰,男,腾讯研究院版权研究中心研究员,主要从事网络安全、数据保护、网络版权与内容产业等互联网法律政策研究工作。...
  6. 前端开发 浮动相关的规则 overflow 0229
  7. Android--使用LayoutInflater加载布局文件的三种方法
  8. pdf是文件还是文档
  9. encodeURIcomponent编码和ASP.NET之间编码转换
  10. 流式计算storm应用场景简介
  11. ad如何设置pcb板子形状_板子的造型_ad09在做PCB时如何设计板子的形状啊_彩妆阁...
  12. 关于pict工具进行测试用例的自动生成过程中:使用 pict.exe test.txt >test.xsl 导出为xls格式的表格文件时,出现拒绝访问的提示解决方案
  13. 两个日期区间跨度是否超过一年,开始日期距当前日期是否超过一年——js实现
  14. 计算机u盘病毒清除方式,终极:如何消除计算机上U盘的“文件夹.EXE病毒”?
  15. 长风破浪正其时,Python天堑变通途(3)(令人智熄的分支循环,优先级问题)
  16. 一个关于xgen开发导入的问题,但其实我觉得更重要的是过程中发生的事情。
  17. JZOJ ???? dexterity
  18. Linux tips
  19. 补充照片:某基同学使用Bing词典
  20. 神仙思维导图:XMind的介绍

热门文章

  1. mysql数据库sa默认密码_SQL Server数据库sa密码相关问题的解决方法
  2. 机器学习之线性回归原理详解、公式推导(手推)、简单实例
  3. 如何更改linux下的Apache端口号
  4. 【Android App】实战项目之虚拟现实(VR)的全景相册(附源码和演示视频 可用于学习和大作业)
  5. Linux ALSA声卡驱动之四:Codec 以及Codec_dai
  6. POST请求和GET请求如何传递和接收解析参数
  7. ET服务器框架学习笔记
  8. 扫盲:arping命令
  9. 微信小程序真机调试踩坑
  10. Linux-MYSQL 登录数据库(命令行,图形化) 及 远程登录