前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料、代码以及群交流解答点击即可加入


本来想爬pexel上的壁纸,然而发现对方的网页不知道设置了什么,反正有反爬虫机制,用python访问直接Fobbiden!真小气qwq
最后还是乖乖去爬zol上的壁纸了

Before:

在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤

一般地,我们去网上批量打开壁纸的时候一般操作如下:

  • 1、打开壁纸网页
  • 2、单击壁纸图(打开指定壁纸的页面)
  • 3、选择分辨率(我们要下载高清的图)
  • 4、保存图片

实际操作时,我们实现了如下几步网页地址的访问:打开了壁纸的网页→单击壁纸图打开指定页面→选择分辨率,点击后打开最终保存目标图片网页→保存图片

在爬虫的过程中我们就尝试通过模拟浏览器打开网页的操作,一步步获得、访问网页、最后获得目标图片的下载地址,对图片进行下载保存到指定路径中

这些中间过程中网页的一些具体筛选条件的构造,需要打开指定页面的源代码去观察和寻找包含有目的链接的标签

具体实现项目与注释

这里我只想获得一些指定的图片,所以我先在网页上搜索“长门有希”,打开了一个搜索结果页面,发现在这个页面上就已经包含了同类型的其他壁纸链接,于是我一开始就把最初访问的目的地址设置为这个搜索结果页面

目标结果页面截图:

图中下标为"1/29"."2/29"为其他同类型目标壁纸,通过点击这些图片我们可以打开新的目标下载图片页面

这里我们查看一下网页源代码

图中黄色底的地方就是打开这些同类壁纸的目的地址(访问的时候需要加上前缀"http://desk.zol.com.cn")

现在我们可以尝试实现构建爬虫:

打开指定页面→筛选获得所有长门有希壁纸的目标下载页面链接

代码如下:

 1 from urllib import request,error2 import re3 4 url = "http://desk.zol.com.cn/bizhi/561_5496_2.html"5 6 try:7         response = request.urlopen(url)# 打开页面8         html = response.read() #此时是byte类型9         html = str(html) # 转换成字符串
10
11         pattern = re.compile(r'<a.*? href="(.*?)".*?>.*?</a>')
12         imglist = re.findall(pattern,html) # 匹配<a>标签中的href地址
13         truelist = []
14         for item in imglist:
15             if re.match(r'^\/bizhi\/561_',item): # 观察到所有目的地址下载页面前缀都是/bizhi/561_,通过match函数进行筛选
16                 truelist.append(item)# 筛选掉其他无关的页面(把真的目标页面加到truelist列表中)
17 except error.HTTPError as e:
18         print(e.reason)
19 except error.URLError as e:
20         print(e.reason)
21 except:
22         pass

获得地址以后我们可以通过获取地址→打开指定页面→选择分辨率→获得目的下载地址→保存到本地指定路径中

在测试的时候我输出了一下上一步truelist中保存的内容

可以看到保存的只是一个后缀,在访问的时候我们需要加上一个指定的前缀
实现代码如下(注释见代码):

 1 # 对于每一张地址,抓取其地址并且下载到本地2 x=03 for wallpaperpage in truelist:4     try:5         # print(wallpaperpage)6         url1 = "http://desk.zol.com.cn" + wallpaperpage7         response1 = request.urlopen(url1) # 打开壁纸的页面,相当于在浏览器中单击壁纸名8         html1 = response1.read()9         html1 = str(html1)
10         pattern1 = re.compile(r'<a.*?id="1920x1080" href="(.*?)".*?>.*</a>')
11         urllist = re.findall(pattern1,html1) #匹配<a>标签中的id为1920 * 1080的地址,相当于在浏览器中选择1920*1080分辨率
12         html2 = str(request.urlopen("http://desk.zol.com.cn"+urllist[0]).read()) # 打开网页
13
14         pattern2 = re.compile(r'<img.*? src="(.*?)"')
15         wallpaperurl = re.findall(pattern2,html2) # 用于获取高清图片的地址
16
17         request.urlretrieve(wallpaperurl[0],"E://walkingbug/chapter1pic/%r.jpg" % x)
18         x+=1
19     except error.HTTPError as e:
20         print(e.reason)
21     except error.URLError as e:
22         print(e.reason)
23     except:
24         pass

最后可以在自己的目标文件夹中看到爬下来的图片集~

其他:

对上面代码出现的一些函数作用加以解释:
request.urlopen(url):用于获取url网页的源代码内容信息,相当于模仿浏览器打开这个页面
response.read():打印出源代码的内容
pattern = re.compile(r'<a.? href="(.?)".?>.?'):对正则表达式进行预编译</a.
imglist = re.findall(pattern,html):在html中搜寻有无与pattern内容相匹配的字符串,保存括号内的内容,(黄色底内的内容)
这两段实际上等价于imglist = re.findall(r'<a.? href="(.?)".?>.?',html)</a.
其实当匹配次数很高的时候,有无预编译的正则表达式匹配速度会有明显的差距,所以尽可能使用compile()预编译之后再进行正则表达式的匹配
request.urlretrieve(wallpaperurl[0],"E://walkingbug/chapter1pic/%r.jpg" % x):用于把目标文件下载保存到指定路径中

静态网页爬取:批量获取高清壁纸相关推荐

  1. python爬取王者_python 爬取王者荣耀高清壁纸

    一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 预览一下桌面吧: 是不是看着这样的桌面也很带感,_ (学会这个技术,你可以爬取其他网站的类似图片 ...

  2. python 爬取王者荣耀高清壁纸

    代码地址如下: http://www.demodashi.com/demo/13104.html 一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 ...

  3. python爬虫爬取必应每日高清壁纸

    python爬虫爬取必应每日高清壁纸 一.简介 二.使用的环境 三.网页分析 1.分析网页每一页url形式以及总页数 2.网页重要信息收集 3.在源码中寻找所需信息的位置 四.代码实现 五.运行爬虫 ...

  4. 简单爬取wallpaper heaven高清壁纸(福利满满~)

    简单爬取wallpaper heaven高清壁纸 2021年1月30日更新 由于网站架构更改,以下内容已经并不能再实现爬取 思路大体不变,仅供参考思路 前言:wallpaper heaven是一个拥有 ...

  5. 爬虫入门(一)——静态网页爬取:批量获取高清壁纸

    应老师分的方向,昨天开始自学入门爬虫了 虽然实现了一个比较简单的小爬虫,自己还是非常兴奋的,还是第一次实现  真的好开心 本来想爬pexel上的壁纸,然而发现对方的网页不知道设置了什么,反正有反爬虫机 ...

  6. Python爬虫实战| Python爬取英雄联盟高清壁纸

    先看一下最终爬取的效果,每个英雄的壁纸都被爬取下来了: "黑暗之女 安妮"的12张壁纸: 高清大图: 下面开始正式教学! 版本:Python 3.5 工具:Jupyter note ...

  7. Python多线程爬虫之二:爬取王者荣耀高清壁纸(多线程)

    一.项目分析 1.查询爬取网址 robots 权限 1.王者荣耀官网:https://pvp.qq.com/ 2.访问王者荣耀官网 rbots 权限: https://pvp.qq.com/robot ...

  8. python多线程爬取王者荣耀高清壁纸过程

    多线程与爬虫 目标url json中查找url 访问url 读取json 查看json的list数组 全部图片 粗暴的单线程获取 多线程执行 目标url 查看http://pvp.qq.com/web ...

  9. Python爬虫入门-scrapy爬取唯一图库高清壁纸

    首先,就是进入到唯一图库,点击上面的高清壁纸项目: 进入之后,下拉,发现是正常的下拉没有Ajax加载,拉到最后面点击末页,可以看出这个栏目里面总共有292页: 翻页看一下URL有什么变化,可以发现只有 ...

最新文章

  1. 将字符串中的URL 解析,获取内容
  2. keil mdk5安装
  3. ConstraintLayout 学习笔记
  4. 那个一年发4篇cell的研究生后来怎样了?
  5. macOS Mojave 升级到macOS Monterey
  6. 希望查询windows下安装cygwin后ssh服务无法启动的解决办法
  7. linux基本管理命令,linux常用命令与基本管理
  8. 类和对象编程(五):友元函数
  9. 全新的Windows Phone 8开发资源汇总
  10. 无线网络中终端设备接入过程
  11. 阿里云郑晓:浅谈GPU虚拟化技术(第一章)
  12. ML_集成学习与Boosting模型
  13. 如何删除双系统(超级详细,手把手教学)
  14. Java模拟醉汉行走问题_醉汉随机行走问题的统计学模型.pdf
  15. 科普:学C++的以后能从事哪些岗位?
  16. PostgreSQL 获取所有库名、表名、字段名
  17. python二级题库 第四套 附刷题软件
  18. 京东双11热爱环游记,使用AUTO.JS脚本自动领汪汪币(2021.10.29最新)
  19. 说说PSTN、ISDN、 ADSL三种互联网接入方式的区别。
  20. CentOS7设置共享目录

热门文章

  1. iApp输入法模式选择
  2. 《tkinter实用教程一》Linux环境下安装tkinter
  3. 短文本重复率快速检测
  4. java 伪装浏览器_[Java教程]伪装虽易测试不易之微信浏览器
  5. 5G、AI都有了,云游戏呢?
  6. matlab feedforward,matlab神经网络函数feedforwardnet构造的网络数学模型是啥
  7. L2之上的L3、L4,StarkWare的这个设想到底能否实现?
  8. 连接上无线网信号没有网络连接到服务器,无线网络连接上但上不了网怎么办? | 192路由网...
  9. 计算机硬件在逻辑上主要,计算机在逻辑上是由哪些部分组成的?各部分的主要功能是什么?...
  10. chromedriver SSL报错解决方案