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数据处理numpy.median的实例讲解
Apr 02 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
Aug 13 Python
用python3 urllib破解有道翻译反爬虫机制详解
Aug 14 Python
Django如何实现上传图片功能
Aug 16 Python
pygame实现俄罗斯方块游戏(基础篇3)
Oct 29 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
Nov 15 Python
Python实现直播推流效果
Nov 26 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 Python
Python实现RabbitMQ6种消息模型的示例代码
Mar 30 Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 Python
基于python获取本地时间并转换时间戳和日期格式
Oct 27 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 Memcache 中实现消息队列
2009/11/24 PHP
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
php通过curl模拟登陆DZ论坛
2015/05/11 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
ext jquery 简单比较
2010/04/07 Javascript
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
重命名批处理python脚本
2013/04/05 Python
Python去除列表中重复元素的方法
2015/03/20 Python
解析Python中的异常处理
2015/04/28 Python
python切片及sys.argv[]用法详解
2018/05/25 Python
python 读取视频,处理后,实时计算帧数fps的方法
2018/07/10 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
《金钱的魔力》教学反思
2014/02/24 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
公司安全管理制度范本
2015/08/05 职场文书
Python中tqdm的使用和例子
2022/09/23 Python