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实现的一个自动售饮料程序代码分享
Aug 25 Python
Django中使用group_by的方法
May 26 Python
python常用函数详解
Sep 13 Python
python爬取w3shcool的JQuery课程并且保存到本地
Apr 06 Python
Python绑定方法与非绑定方法详解
Aug 18 Python
对python .txt文件读取及数据处理方法总结
Apr 23 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
python支持多线程的爬虫实例
Dec 21 Python
Pytorch 之修改Tensor部分值方式
Dec 27 Python
如何学习Python time模块
Jun 03 Python
python的html标准库
Apr 29 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和ACCESS写聊天室(一)
2006/10/09 PHP
针对初学PHP者的疑难问答(2)
2006/10/09 PHP
php计算title标题相似比的方法
2015/07/29 PHP
php session的锁和并发
2016/01/22 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
Javascript中setTimeOut和setInterval的定时器用法
2015/06/12 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
vue实现简单loading进度条
2018/06/06 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
Python中的集合介绍
2019/01/28 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
基于Python实现视频的人脸融合功能
2020/06/12 Python
10个顶级Python实用库推荐
2021/03/04 Python
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
韩国江南富人区高端时尚百货商场:Galleria(格乐丽雅)
2018/03/27 全球购物
工商技校毕业生自荐信
2013/11/15 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
2016年国陪研修感言
2015/11/18 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
Python实现数据的序列化操作详解
2022/07/07 Python