Python 批量下载阴阳师网站壁纸


Posted in Python onMay 19, 2021

代码复制可直接使用,记得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保证程序出错也不会挂掉。

借鉴的代码中每一次的下载,都会对要保存的目录进行打开和关闭,于是将打开关闭抽离到最外层,下载的逻辑放在里面,下载图片成功的提速果然肉眼可见~

总结

壁纸确实不戳~,希望下一个学习的脚本能更加有趣~

以上就是Python 批量下载阴阳师网站壁纸的详细内容,更多关于python 下载阴阳师网站壁纸的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python实现的ini文件操作类分享
Nov 20 Python
状态机的概念和在Python下使用状态机的教程
Apr 11 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
May 22 Python
python编程培训 python培训靠谱吗
Jan 17 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 Python
python 制作自定义包并安装到系统目录的方法
Oct 27 Python
python并发编程 Process对象的其他属性方法join方法详解
Aug 20 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
Sep 25 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 Python
Python机器学习工具scikit-learn的使用笔记
Jan 28 Python
python批量提取图片信息并保存的实现
Feb 05 Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 #Python
python使用pywinauto驱动微信客户端实现公众号爬虫
python基于tkinter实现gif录屏功能
Python 读写 Matlab Mat 格式数据的操作
May 19 #Python
python3 hdf5文件 遍历代码
May 19 #Python
Python基础之元组与文件知识总结
Python使用protobuf序列化和反序列化的实现
You might like
PHP中调用JAVA
2006/10/09 PHP
简单的php 验证图片生成函数
2009/05/21 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
Zend Framework教程之Bootstrap类用法概述
2016/03/14 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
基于jquery插件实现拖拽删除图片功能
2020/08/27 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
express默认日志组件morgan的方法
2018/04/05 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
jquery实现加载更多"转圈圈"效果(示例代码)
2020/11/09 jQuery
pyside写ui界面入门示例
2014/01/22 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
对Django外键关系的描述
2019/07/26 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
四好少年事迹材料
2014/01/12 职场文书
社区八一活动方案
2014/02/03 职场文书
优秀学生事迹材料
2014/02/08 职场文书
关于读书的活动方案
2014/08/14 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏