python:下载精美壁纸--学习笔记

news/2024/11/29 3:51:25/

个人学习记录

一、效果展示

这里贴一个还不错的某壁纸网:Wallpaper Abyss - HD Wallpapers, Background Images

下载的结果展示:

下载进度展示:

二、完整代码

代码中给定了部分注释

import os
import re
import urllib.request
from concurrent.futures import ThreadPoolExecutorimport requests
import tqdm as tqdm
from bs4 import BeautifulSouphead = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.81 Safari/537.36"
}def getPage(url):# 获取通过BeautifulSoup美化过的网页req = urllib.request.Request(url=url, headers=head)html = ""try:response = urllib.request.urlopen(req)html = response.read()page = BeautifulSoup(html, "html.parser")except Exception as result:print(result)return pagedef getFileType(name):# 获取图片的类型,即图片URL图片名的后缀.png .jpg等格式str1 = str(name).split('.', -1)str2 = str1[len(str1) - 1]return str2def getPic(url):pattern = r'<img alt="(.*?)" class="img-responsive big-thumb" height=".*?" loading="lazy" src="(.*?)" width=".*?"/>'# 在正则表达式匹配时里面各参数的顺序按照BeautifulSoup后的page来设置,在原始html中,img 后面并不是alt而是 img class# (.*?)即表示要获取的段,.*?代表任意字符不做匹配imgPage = re.compile(pattern, re.S)page = getPage(url)picname = []# picname存储alt字段,对于一些图片的描述可做图片名,也直接用URL的图片名# 故picname可要可不要picurl = []for item in page.find_all('img'):# 遍历查找当前网页中所有的图片item = str(item)imgurl = re.findall(imgPage, item)if len(imgurl) != 0:if imgurl[0][0] != '':imgname = imgurl[0][0] + '.' + getFileType(imgurl[0][1])picname.append(imgname)picurl.append((imgurl[0][1]).replace('thumbbig-', ''))# 因为该主页中图片被压缩了,删除thumbbig-的URL才是图片原始地址return picname, picurldef main(url):filePath = 'C:/Users/txl/Desktop/123/'# 给定文件存储路径# i = 0for item in (getPic(url)[1]):req = urllib.request.Request(url=item, headers=head)data = urllib.request.urlopen(req).read()# 读取当前图片resp = requests.get(item, stream=True)fileSize = int(resp.headers.get('content-length', 0))# 获取当前图片的总大小imgname = item.split('/')[-1]# 此处以URL中的后缀直接作为图片名(可能是毫无规律的数字,故有时中文网站alt中的中文描述更适合做名字)if not os.path.exists(filePath + imgname):pbar = tqdm.tqdm(total=int(fileSize), unit='iB', unit_scale=True, desc=item.split('/')[-1])# 添加下载进度显示with open(filePath + imgname, 'wb') as file:for chunk in resp.iter_content(chunk_size=1024):if chunk:file.write(chunk)pbar.update(1024)else:continue# i = i + 1if __name__ == "__main__":url1 = 'https://wall.alphacoders.com/search.php?search=landscape&quickload=300&page='for count in range(1, 3):url = url1 + str(count)# pool = ThreadPoolExecutor(max_workers=10)# pool.submit(main(url), count)main(url)exit(0)

内容简介

        打开网站随便浏览,我们发现该网页的图片采用下滑加载的方式,不是其他一些点击分页,所以在浏览器上我们并没有发现URL发生变化,这时F12打开network,我们在下滑刷新时产生了一个XHR请求,发现了带有分页标识的URL。

       同时,在network中还有代码中需要的请求头header(即本代码中head那一串字符),现在很多网站如果不加请求头http请求是会被网站禁止的。

      代码并不复杂,怎么都能看懂 ,掌握之后就可以灵活运用在自己日常图片爬取了(包括但不限于壁纸、小可爱、表情包)。当然其中还有很多可以优化或存在错误的地方,欢迎指正。


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

相关文章

如何保存 Windows 10「聚焦」功能的精美壁纸-------附带python脚本

文章目录 1 直接复制2 执行py脚本 使用windwos电脑发现锁屏时的背景图片很漂亮&#xff0c;但是想保存怎么办&#xff1f;没有按钮&#xff0c;于是自己写了一个脚本方便自己。 1 直接复制 进入文件夹【Admin改为自己的用户名】&#xff0c;然后复制出来&#xff0c;把文件后缀…

python制作日历并保存成excel_Python+Excel制作精美壁纸日历,任意DIY

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 以下文章来源于Python实用宝典 &#xff0c;作者Python实用宝典 给自己10分钟(滑稽)&#xff0c;python回你一个智慧与美貌并存的备忘小神器 相信它会给…

Ubuntu下载精美壁纸

网址&#xff1a;http://www.omgubuntu.co.uk/2013/08/ubuntu-13-10-winning-wallpapers-revealed 打开网页&#xff0c;选择Download Ubuntu 13.10 Wallpaper 将deb文件保存在某一目录&#xff0c;默认保存在~/Downloads ubuntu-wallpapers-saucy_13.04.013.10.20130823-0ub…

一种用于Linux 自动更换精美壁纸的方法

本文介绍一种使用脚本自动获取 Unsplsh 精美图片并设置为桌面的方法&#xff0c;最终效果为命令行使用一条指令达到上述效果。理论上说&#xff0c;本文原理可用于所有 Gnome 桌面环境的 Linux 发行版。 GNOME&#xff08;/ɡˈnoʊm/或/ˈnoʊm/&#xff09;是一个完全由自由软…

MAC动态精美壁纸强烈推荐【文末福利】

在遇见超级好用的壁纸应用之后&#xff0c;发现MAC除了可以用来工作&#xff0c;还可以这么漂酿和有趣~ 推荐几款最近发现的壁纸应用&#xff0c;好东西&#xff0c;要一起分享嘛~ TOP1 【Dynamic Wallpaper&#xff1a;动态壁纸】 可能很多人都知道steam上"Wallpaper E…

如何破解Mac并为其提供真正应得的精美壁纸

by Aakaash Jois 通过Aakaash Jois 如何破解Mac并为其提供真正应得的精美壁纸 (How to hack your Mac and give it the gorgeous wallpapers it truly deserves) Let’s face it. The default wallpapers on the Mac gets boring after a few weeks. And setting new wallpape…

Python爬虫应用实战案例-xpath正则表达式使用方法,爬取精美壁纸

使用XPath XPath,全称XML Path Language,即XML路径语言,它是在XML语言中查找信息的语言。它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。 在上一篇文章中讲述了正则表达式的使用方法,正则表达式的难度还是比较大的,如果不花足够多的时间去做的话还是比较…

Python爬虫爬取-爬取某个网页的精美壁纸

前言&#xff1a;学了python爬虫&#xff0c;那必须搞点好康的&#xff01; 先导入需要用到的库 import requests from bs4 import BeautifulSoup import time 1.针对图片网&#xff0c;先去源代码里面&#xff0c;找它的网址。 我是用的wallhaven网站的网址 然后得到了一…