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编程线性回归代码示例
Dec 07 Python
Python字典创建 遍历 添加等实用基础操作技巧
Sep 13 Python
在python中实现对list求和及求积
Nov 14 Python
python处理multipart/form-data的请求方法
Dec 26 Python
Python制作exe文件简单流程
Jan 24 Python
Numpy之random函数使用学习
Jan 29 Python
python 3.7.4 安装 opencv的教程
Oct 10 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
Python递归函数特点及原理解析
Mar 04 Python
简单了解Django项目应用创建过程
Jul 06 Python
python如何快速生成时间戳
Jul 21 Python
python包的导入方式总结
Mar 02 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.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
《七颗钻石》教学反思
2014/02/28 职场文书
毕业生自荐信格式
2014/03/07 职场文书
个性婚礼策划方案
2014/05/17 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
2015年入党决心书
2015/02/05 职场文书
大学生村官个人总结
2015/02/15 职场文书
贪污检举信范文
2015/03/02 职场文书
2015年班干部工作总结
2015/04/29 职场文书
就业证明函
2015/06/17 职场文书
世界名著读书笔记
2015/06/25 职场文书