Python 批量下载阴阳师网站壁纸
作者:阿鼎0815 发布时间:2023-12-28 15:01:42
标签:python,下载,阴阳师,壁纸
目录
最终版本
过程
借鉴代码
思考urllib.request和requests
BeautifulSoup
优化处理
总结
代码复制可直接使用,记得pip install下载requests和bs4
最终版本
# 引入系统类库用于打开关闭文件
import sys
# 使用文档解析类库
from bs4 import BeautifulSoup
# 使用网络请求类库
import requests
#图片保存目录
path = 'D:/阴阳师'
#阴阳师壁纸网站
html_doc = "https://yys.163.com/media/picture.html"
# 请求
requests_html_doc = requests.get(html_doc).text
# 正则匹配所有href地址
regex = re.compile('.*?href="(.*?)2732x2048.jpg" rel="external nofollow" ')
urls = regex.findall(requests_html_doc)
# set集合可以防止下载的图片重复
result = set()
for i in urls:
result.add(i)
# 计数器用于图片命名
num = 0
# 文件路径、操作模式、编码 # r''
# 打开文件录入图片
f = open(r'result.txt', 'w', encoding='utf-8')
for a in urls:
try:
image_data = requests.get(a).content
image_name = '{}.jpg'.format(num) # 给每张图片命名
save_path = path + '/' + image_name # 图片的保存地址
with open(save_path, 'wb') as f:
f.write(image_data)
print(image_name, '=======================>下载成功!!!')
num = num+1 # 下一张图片名字序号加一
except:
pass
# 关闭文件录入
f.close()
print("\r\n扫描结果已写入到result.txt文件中\r\n")
过程
借鉴代码
自己从0开始,没有头绪,而且对python掌握度不高,那先借鉴别人的代码开始,第一篇借鉴的代码如下
# 引入系统类库
import sys
# 使用文档解析类库
from bs4 import BeautifulSoup
# 使用网络请求类库
import urllib.request
path = 'D:/阴阳师'
html_doc = "https://yys.163.com/media/picture.html"
# 获取请求
req = urllib.request.Request(html_doc)
# 打开页面
webpage = urllib.request.urlopen(req)
# 读取页面内容
html = webpage.read()
# 解析成文档对象
soup = BeautifulSoup(html, 'html.parser') # 文档对象
# 非法URL 1
invalidLink1 = '#'
# 非法URL 2
invalidLink2 = 'javascript:void(0)'
# set集合可以防止下载的图片连接重复
result = set()
# 计数器用于图片命名
num = 0
# 查找文档中所有a标签
for k in soup.find_all('a'):
# print(k)
# 查找href标签
link = k.get('href')
# 过滤没找到的
if(link is not None):
# 过滤非法链接
if link == invalidLink1:
pass
elif link == invalidLink2:
pass
elif link.find("javascript:") != -1:
pass
else:
result.add(link)
for a in result:
# 文件路径、操作模式、编码 # r''
f = open(r'result.txt', 'w', encoding='utf-8')
# image_data = urllib.request.get(url=a).content
image_data = requests.get(url=a).content
image_name = '{}.jpg'.format(num) # 给每张图片命名
save_path = path + '/' + image_name # 图片的保存地址
with open(save_path, 'wb') as f:
f.write(image_data)
print(image_name, '=======================>下载成功!!!')
num = num+1 # 下一张图片名字序号加一
f.close()
print("\r\n扫描结果已写入到result.txt文件中\r\n")
思考urllib.request和requests
借鉴的代码中使用urllib.request来请求,刚开始学习看到的一些代码实例也常用urllib.request来发起请求,之后看到有的代码使用的是requests。对于我个人,主观感受requests更加便捷,少写了几行代码,于是便去查阅了解两者的区别。
BeautifulSoup
接触到了BeautifulSoup,并且在一些文章的评论中看到对BeautifulSoup的称赞,进入文档查阅了下用法,改变了我之前对python,获取文档中部分特征的元素节点的写法困难的印象。
Beautiful Soup 4.4.0 文档
优化处理
之所以要加正则匹配,因为一开始获取到的图片链接里有空字符串的现象,在下载图片的时候直接报错整个程序挂掉,而且这个借鉴代码中的invalidLink1和invalidLink2看起来属实不舒服。所以添加了正则从源头保证链接的有效性,并且在执行下载代码中,添加了try,except保证程序出错也不会挂掉。
借鉴的代码中每一次的下载,都会对要保存的目录进行打开和关闭,于是将打开关闭抽离到最外层,下载的逻辑放在里面,下载图片成功的提速果然肉眼可见~
总结
壁纸确实不戳~,希望下一个学习的脚本能更加有趣~
来源:https://juejin.cn/post/6963871968378486798


猜你喜欢
- 我就废话不多说了,大家还是直接看代码吧~package mainimport ("fmt""net/url&q
- 目录实例031:字母识词实例032:反向输出II实例033:列表转字符串实例034:调用函数实例035:设置输出颜色实例036:算素数实例0
- 思想:4个数字的排列,加上3个运算符的排列,使用后缀表达式的表现如下:情形一:1,2,3,4,+,-,* => 24*24*4情形二:
- 前言:在前面一些文章中,经常能看到介绍某某参数的作用,可能有些小伙伴仍搞不清楚 MySQL 参数是啥。本篇文章我们来聊聊 MySQL 参数,
- 零、SQLAlchemy是什么?SQLAlchemy的官网上写着它的介绍文字:SQLAlchemy is the Python SQL to
- 我们都知道ACCESS是ASP的亲密伙伴。因为两种最简单的东西碰在一起总能迸发出火花。然而,当我们过滤不严格的时候经常出现日文字符,这个时候
- 本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下一、运行截图:二、代码# 用数组定义一个棋盘,棋盘大小为
- python3 cmp实现python3移除了cmp()函数,但提供了六个丰富的比较运算符,详见此处import operator &nbs
- 表空间概述Oracle的表空间属于Oracle中的存储结构,是一种用于存储数据库对象(如:数据文件)的逻辑空间,是Oracle中信息存储的最
- 代码实例:try: import termios, TERMIOS 1except ImportErro
- 不同数据库之间若不能导入导出,那么将是一件可怕的事情,所幸的是一般情况下通过不同的方法和途径,都可以实现,方法有多种,本人提供其中的一个,提
- 在批评Python的讨论中,常常说起Python多线程是多么的难用。还有人对 global interpreter lock(也被亲切的称为
- 图片按钮是我们经常应用的网页元素,按钮的生成有两种方法,一个是用链接<a>来模拟按钮,一个是用现成的表单按钮。<input
- 本文实例讲述了Python基础之字符串常见操作。分享给大家供大家参考,具体如下:字符串基本操作切片# str[beg:end]# (下标从
- 需要用到2个库,requestsocks5-http-client/lib/Agent/或socks5-https-client/lib/A
- 在写一些很小的机器学习项目的时候,我们往往希望training, testing和inference能共用一个入口main,但是不同的功能使
- 将时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果如:{‘year':2018,‘month
- 整个安装流程如下: 1,首先安装apache:我安装的版本是: httpd-2.2.16-win32-x86-openssl-0.9.8o.
- 网站发布到IIS后,发现网站使用的Bootstrap框架所引用的woff字体无法正常显示。于是跟踪http请求,发现woff字体请求出现GE
- Python中为了方便程序直接生成exe文件,它存在一个pyinstaller库,使用这个库可以直接将.py程序生成exe文件。这个命令不是