爬虫|wallhere壁纸批量下载
大家好,我是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壁纸批量下载相关推荐
- Python爬虫 - wallhaven任意页面下的壁纸批量下载
基于Python 任意页面下的壁纸批量下载 github Maxpagenum 爬取页数 fpath 保存路径 url 基础地址 import requests import re import ti ...
- Python实现壁纸批量下载
Python实现壁纸批量下载 最近想要一些新的壁纸,但是从网站上面找一张一张下载太慢了,所以写了个爬虫批量下载壁纸. 先看看实现的效果 需要的包: requests.bs4 .os.re 源码: # ...
- Python爬虫——利用Scrapy批量下载图片
Python爬虫--利用Scrapy批量下载图片 Scrapy下载图片项目介绍 使用Scrapy下载图片 项目创建 项目预览 创建爬虫文件 项目组件介绍 Scrapy爬虫流程介绍 页面结构分析 定义I ...
- python爬虫之壁纸的下载
python爬虫之壁纸的下载 好久没有写博客了,暑假这段时间在学校里面忙着写小论文,没机会写我最喜欢的爬虫了(虽然很简单,但架不住哥喜欢...) 好了,废话不多说了,开始把 本次爬虫爬取的是 手机壁纸 ...
- 使用python实现高清壁纸批量下载
一.高清壁纸批量下载 1.概述 此代码是使用python多线程批量下载高清壁纸的一个小脚本,代码略为简陋. 此代码仅供学习与交流,请不要用于违法用途. import requests from lxm ...
- 虾米音乐爬虫实战分析 批量下载虾米音乐到本地
刚开始我是奔着抓API的,发现翻页的参数不好找,后来看到搜索出来的歌曲都存在当前url中,翻页只需更换浏览器中的url参数即可:https://www.xiami.com/list?page=1&am ...
- python代码壁纸-python实现壁纸批量下载代码实例
前言 好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python.这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸. 注意:本文所属项目仅用 ...
- python代码壁纸-70行python代码实现壁纸批量下载
前言 好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python.这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸. 注意:本文所属项目仅用 ...
- wallpaper代码_70 行 python 代码实现壁纸批量下载!
好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python.这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸. 注意:本文所属项目仅用于py ...
最新文章
- 拒绝了我们的连接请求_职场上,我们该如何巧妙而优雅的拒绝同事忙的请求呢?...
- 如何查看外网ip_内网ip和外网ip的联系以及连接过程
- wxWidgets:wxStdOutputStream类用法
- 如此智能的Windows Embedded Standard 7
- 作者:曹建峰,男,腾讯研究院版权研究中心研究员,主要从事网络安全、数据保护、网络版权与内容产业等互联网法律政策研究工作。...
- 前端开发 浮动相关的规则 overflow 0229
- Android--使用LayoutInflater加载布局文件的三种方法
- pdf是文件还是文档
- encodeURIcomponent编码和ASP.NET之间编码转换
- 流式计算storm应用场景简介
- ad如何设置pcb板子形状_板子的造型_ad09在做PCB时如何设计板子的形状啊_彩妆阁...
- 关于pict工具进行测试用例的自动生成过程中:使用 pict.exe test.txt >test.xsl 导出为xls格式的表格文件时,出现拒绝访问的提示解决方案
- 两个日期区间跨度是否超过一年,开始日期距当前日期是否超过一年——js实现
- 计算机u盘病毒清除方式,终极:如何消除计算机上U盘的“文件夹.EXE病毒”?
- 长风破浪正其时,Python天堑变通途(3)(令人智熄的分支循环,优先级问题)
- 一个关于xgen开发导入的问题,但其实我觉得更重要的是过程中发生的事情。
- JZOJ ???? dexterity
- Linux tips
- 补充照片:某基同学使用Bing词典
- 神仙思维导图:XMind的介绍