python爬虫---桌面壁纸换不停

news/2024/11/23 4:04:57/

文章目录

  • 前言
  • 一、明确一个大方针
  • 二、分析网页
    • 1.查看页面结构
  • 三、开始动手吧
    • 1.获取网页信息
    • 2.获取图片地址
    • 3.全部代码
  • 总结

前言

本案例仅用于技术学习

每天与电脑为伴,天天看着默认的桌面屏幕,作为喜新厌旧的我怎么能忍?搜索桌面壁纸,随意的挑选了一个网址,开始爬取图片之旅。

一、明确一个大方针

中心主旨还是获取网页信息—提取图片信息—保存图片
使用到的库有requests,获取网页信息,BeautifulSoup库提取网页信息,re匹配图片个数字段,os保存文件

二、分析网页

http://desk.zol.com.cn/ 目标网页

1.查看页面结构

在这里插入图片描述
网站将图片按照分类分别存放,设置了小专题,每个专题内有不同个数的图片。选择风景分类,查看每个专题排列规则。
在这里插入图片描述
在这里插入图片描述
观察发现每个专题对应每个<li class=“photo-list-padding”>标签,图片的个数在span标签下。点开li标签,可以看到a标签中有属性href,点击链接,进入专题,说明这个链接是专题的链接。
在这里插入图片描述
在专题内查看图片,通过查看上下张图片,同一个专题内的图片是按照顺序命名的,这样我们就知道了如何找到专题内图片的网址。

在这里插入图片描述
接下来需要找到当前图片的地址,查看a标签的id命名,找到当前图片,发现有img标签,点击网址,确实是我们要找的图片。

三、开始动手吧

1.获取网页信息

这里直接从风景开始,如果需要其他分类可以修改网址或循环获取。

url="http://desk.zol.com.cn/fengjing"
html = getHtml(url)  #获取网页信息
getPicUrl(html,5)     #获取图片并保存,传入要抓取的图片数量

2.获取图片地址

图片在专题中保存着,所以需要先获取专题url,向专题url发送请求,获取专题的网址信息,在信息中找到图片地址。这里获取了图片张数,使用专题内第一张图片的数字递增寻找下一张,但是实际网站图片不是按照递增保存的,会导致部分图片找不到。
在这里插入图片描述

3.全部代码

import os
import requests
import re
from bs4 import BeautifulSoupdef getHtml(url):try:r=requests.get(url,timeout=30)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.textexcept Exception as e:print("网址不正确")print(e)def getPicUrl(html,picn):try:soup=BeautifulSoup(html,'html.parser')lis=soup.find_all('li',"photo-list-padding")#遍历标题for li in lis:if (picn != 0) & (len(lis) != 0):des=li.a.span.textprint(des)'''正则表达式获取描述中的图片张数'''pattern = re.compile(r".*?(\d+).*")res = re.findall(pattern, des)n=int(str(res[0]))'获取专题网址链接'href = li.a.attrs['href']href1 = href.split('_')[0]href2 = href.split('_')[1]'''跟据获取的图片数量拼接网址''''''按照递增顺序获取图片,获取的第一张图片id不是最小的'''for i in range(n):h = int(href2)+iurl = "http://desk.zol.com.cn"+href1+'_'+str(h)+'_2.html'print(url)pichtml = getHtml(url)'''网址存在的情况下保存图片'''if pichtml is not None:soup2 = BeautifulSoup(pichtml, 'html.parser')imgurl = soup2.find(id='bigImg').attrs['src']print(imgurl)savePic(imgurl)picn=picn-1if picn == 0:breakelse:print("收集完成")breakexcept Exception as e:print(e)def savePic(url):'''保存到文件中'''root = "D:/Program/picture/"path = root + url.split('/')[-1]try:if not os.path.exists(path):r = requests.get(url)with open(path, 'wb') as f:f.write(r.content)f.close()print('保存成功')else:print('已存在')except Exception as e:print('保存失败,失败原因为:')print(e)def main():url="http://desk.zol.com.cn/fengjing"html = getHtml(url)getPicUrl(html,5)main()

总结

运行代码后会自动抓取指定数量的图片,抓取完成后会自动停止。目前的不足之处有:1.专题内部分图片抓取不到 2.抓取不能接着上一次停下的位置继续 3.循环抓取不同分类
不过目前来看,下载的图片已经够过完2020了(狗头),将文件夹设置成桌面,每天自动换一张。虽然没多少时间能看着桌面壁纸。


http://www.ppmy.cn/news/205961.html

相关文章

upupoo启动不了 mysql_【upupoo动态桌面壁纸和MySQL API 中文手册哪个好用】upupoo动态桌面壁纸和MySQL API 中文手册对比-ZOL下载...

upupoo动态桌面是一款电脑动态桌面软件&#xff0c;又译为啊噗啊噗&#xff0c;可以将视频设为桌面壁纸&#xff0c;软件也收集了动漫、舞蹈、神曲、风景等大量的视频壁纸资源&#xff0c;全视角动态桌面&#xff0c;交互桌面&#xff0c;改变对传统桌面的认知。 软件功能 海量…

upupoo启动不了 mysql_【upupoo动态桌面壁纸和phpMySQLConsole 0.1哪个好用】upupoo动态桌面壁纸和phpMySQLConsole 0.1对比-ZOL下载...

upupoo动态桌面是一款电脑动态桌面软件&#xff0c;又译为啊噗啊噗&#xff0c;可以将视频设为桌面壁纸&#xff0c;软件也收集了动漫、舞蹈、神曲、风景等大量的视频壁纸资源&#xff0c;全视角动态桌面&#xff0c;交互桌面&#xff0c;改变对传统桌面的认知。 软件功能 海量…

python 实现桌面壁纸自动更换

学了python大概两周了&#xff0c;今天做了个小程序&#xff0c;感觉还比较实用。在此记录一下 程序介绍 功能介绍:每隔30分钟&#xff0c;随机更换桌面。桌面资源是在zol网&#xff0c;自动爬取的热门图片 开机自启设置&#xff1a;发送changeBg.exe快捷方式到 C:\用户\用户…

python桌面爬虫_Python爬虫爬取动漫桌面高清壁纸

这篇文章主要介绍了Python爬取高清壁纸&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 前言 在设计爬虫项目的时候&#xff0c;首先要在脑内明确人工浏览页面获得图…

python爬取ZOL壁纸,并批量下载到本地

声明&#xff1a;仅供参考、学习。 爬取地址&#xff1a;http://desk.zol.com.cn/dongwu/1920x1080/ 爬取页码&#xff1a;1-2页 存储位置&#xff1a;D盘根目录 运行条件&#xff1a;电脑安装python 3.0 代码&#xff1a; from urllib import request,error import re url…

Python网络爬虫小试刀——抓取ZOL桌面壁纸图片3

前篇回顾&#xff1a;下载一个类型集合的全部图片 本篇目标&#xff1a;获得一个集合页面中所有集合中所有的图片 使用urllib2获取已知集合网页页面的HTML代码&#xff0c;首先使用正则表达式获取本页图片集合的url&#xff0c;根据上篇所写戏在图片集合的函数 def getImgAssem…

Python运用urllib2和BeautifulSoup爬取网站ZOL桌面壁纸上的精美电脑壁纸

Python运用urllib2和BeautifulSoup爬取网站ZOL桌面壁纸上的精美电脑壁纸 #!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2017/7/28 13:00 # File : SpyImg.py""" 爬取壁纸 """from bs4 import BeautifulSoup import urllib2 i…

Python网络爬虫小试刀——抓取ZOL桌面壁纸图片4

前篇回顾&#xff1a;获得一个类型集合页面中所有集合中的图片 本篇目标&#xff1a;获取整个网站所有类型集合的壁纸图片 使用urllib2&#xff0c;正则表达式&#xff0c;threading等高效下载网站’http://desk.zol.com.cn‘中壁纸图片。 使用urllib2获取url &#xff1d; …