python批量实现百度网盘链接有效性检测
python批量实现百度网盘链接有效性检测
(一)初始数据样式
将百度网盘连接存放到 采用逗号间隔的UTF-8类型csv 文件中,数据存放格式为资源名 | 链接 | 密码
,如下图所示:
逗号间隔的UTF-8类型csv 文件可以采用Excel转换而得,选择另存为操作即可:
(二)检测
2.1 原理与思路
如链接失效,会出现如下界面:
通过控制台查看返回的代码:
如果链接无效会有标签 class = share-error-left , div_id = share_nofound_des
。故可以通过 urllib 库和 bs4.BeautifulSoup 请求并解析HTML,从而判断该标签是否存在。
2.2 设计
通过读取 csv 文件,依次将资源链接传入处理函数,依次判断并保存到新的 resultLink.csv
中,作为输出结果。
2.3 代码 Demo
2.3.1 判断与解析代码
# -*- coding: utf-8 -*-
"""
comment: 百度网盘爬虫分析@author: GanAH 2020/5/12.
@version 1.0.
@contact: https://www.ganahe.top/
"""
import csv
import os
import urllib.request
import timefrom bs4 import BeautifulSoupclass BaiduNetdisk(object):def __init__(self):passdef disabledLink(self, link):"""链接有效性判断:param link: baiduNetdisk download Link:return: 0-False / html-True"""try:print("url", link)headers = {'User-Agent': 'Mozilla/4.0(compatible;MSIE 5.5;Windows NT)'}req = urllib.request.Request(url=link, headers=headers, method='POST')response = urllib.request.urlopen(req, None, 8) # 在这里应该加入代理html = response.read()return {"code": 1, "status": html}except Exception as e:return {"code": 0, "status": e.__str__()}def anylies(self, link):resultDict = self.disabledLink(link)if resultDict["code"] == 0:print("异常错误!")print(resultDict.get("status"))else:try:# print(resultDict.get("status").decode('utf-8'))# ak = str(resultDict.get("status"),encoding = "utf8")# print(type(resultDict.get("status")))# for i in range(len(ak)):# print(ak[i])soup = BeautifulSoup(resultDict.get("status"), 'html.parser') # 文档对象# 类名为xxx而且文本内容为hahaha的divcount = 0# 查找是否有share-error标签,有则无效print("查找是否有share-error标签,有则无效")for k in soup.find_all('div', class_='share-error-left'): # ,string='更多'print(k)count += 1if count == 0:print("链接有效")return Trueelse:print("链接无效")return Falseexcept Exception as e:print("异常错误-302:", e.__str__())
2.3.2 逻辑处理代码
if __name__ == "__main__":try:print("【===百度网盘链接有效性自动判别程序===】\n")print(" * 联系方式\n 1.https://www.ganahe.top/ \n 2.合作微信公众号:星辰换日\n")# 读取CSV文档filePath = input(" 请输入文件路径(示例:E:\\百度\\Link.csv):")sourceList = []with open(filePath, "r", encoding="utf8") as F:for line in F:# print(line)sourceList.append(line.split(","))with open(os.path.dirname(filePath) + "resultLink.csv", "w",newline= "", encoding="utf8") as S:writer = csv.writer(S)head = sourceList[0]head.append("有效性")print(head)writer.writerow(head)for i in range(1, len(sourceList)):line = sourceList[i]link = line[1]print("\n ------- 第"+str(i)+"个链接情况:",sourceList[i])just = BaiduNetdisk().anylies(link)if just is True:line.append("有效")else:line.append("链接无效")writer.writerow(line)print("\n-- 结束,所有链接均已分析完成,请打开resultLink.csv查看")time.sleep(600)except Exception as e:print("异常错误-301:", e.__str__())
(三) 测试结果
3.1 使用方式
如果 csv 文件与检测代码文件(baiduNetdisk.py,需要python编译环境)或程序(baiduNetdisk.exe,可以在window平台直接执行)在同一文件夹目录下:
可以直接输入文件名[.后缀文件类型]即可。
GIF 展示如下:
如果不在同一文件夹目录下需要输入绝对路径:
3.2 输出结果
由于大多链接已失效,为了验证是否可以检测出有效链接,特定在末尾加上有效的链接进行测试:
可以发现,有效性得到检验。
(四)获取程序或源代码方式
4.1 源文链接
4.2 Github(请到上边源文章查看)
4.3 网盘(请到源文章查看)
4.4 最新版本:带GUI界面
python批量实现百度网盘链接有效性检测相关推荐
- Python3/Python2百度网盘链接地址
Python3/Python2百度网盘链接地址 Python官网登录不上?Python下载太慢? 我已经把Python的安装包下载好并上传百度网盘,链接:https://pan.baidu.com/s ...
- java的jdk安装教程附百度网盘链接环境配置遇到的各种问题版本选择
首先关于JDK版本的选择–附百度网盘链接 现在互联网行业各家公司大部分使用的是jdk8.0(也被叫做jdk1.8,有兴趣的话可以去百度以下jdk演变历史)虽然现在jdk更新到11版本了,但是不建议使用 ...
- 如何安装配置JDK(保姆级完美解决教程+附百度网盘链接)
JDK种类繁多,在这里我以JDK14为例,为什么以JDK14为例呢?当然是为了破解白嫖idea2020旗舰版.^_^^_^(如果大家感兴趣,我后续会一个教程) 首先去甲骨文官方网站下载JDK1 ...
- 百度网盘链接前缀怎么加?
百度网盘是一款很棒的云存储软件,不少小伙伴都在使用,但是在使用过程中也会发生一些问题.就比如很多网盘的链接如果不加前缀就无法打开,那百度网盘链接前缀要怎么加? 纯净之家-win7纯净版系统_win7 ...
- 重磅----股票风险指标计算,附程序,百度网盘链接
今天我们放假,回贵阳,准备实习,我也可以专心的去研究自己感兴趣的方向,我们计算股票指标包括beta,alpha,最大回撤,在险价值等,指标很多,我就不仔细介绍了,今天挺累的,我们直接看效果,弄成了图形 ...
- eNSP安装包 百度网盘链接开篇·前言
eNSP安装包 百度网盘链接 链接:https://pan.baidu.com/s/1_3JmJ-FufPmeHKGsMVXaLA?pwd=d5i3 提取码:d5i3 开篇·前言 本篇是针对于初学者, ...
- coppeliasim/vrep官网软件安装包(免费百度网盘链接)
2021年10月23日更新说明:增加了官网链接 增加了CoopeliaSim Edu V4.2.0的windows.ubuntu.macOS各系统的软件包@meng 2022年4月21日更新说明:增加 ...
- opencv4.4百度网盘链接
opencv4.4百度网盘链接 链接:https://pan.baidu.com/s/1LWE0IvfoBR7_fxgWdTvm9A 提取码:d83j
- javascript俄罗斯方块 面向对象编程(jQuery)(附带百度网盘链接)
这个俄罗斯方块游戏是通过javascript面向对象编程的方法编写,代码结构分为游戏类(Game.js),方块类(block.js),地图类(Map.js),方块形状对象类(blockjson.js) ...
- Android Studio 1.0 正式版下载(另附百度网盘链接)
众所周知,想要访问Android官网还是不容易的,这里我把那个页面复制过来了,里面带有需要的链接.其实只要把该链接离线到百度网盘即可(或者使用我已的百度网盘链接),或者用迅雷来下载,速度还是挺快的. ...
最新文章
- 如何开始SLAM学习?
- R语言可视化分面图、多变量分组多水平t检验、可视化多变量分组多水平分面条形图(faceting bar plot)并添加显著性水平、在标签和绘图上边框之间添加15%的空格、添加抖动数据点
- 收集几个js实现的日期时间控件
- 刚刚,《The Scientist》预测了未来最热门的生命科学技术
- LeetCode: 107_Binary Tree Level Order Traversal II | 二叉树自底向上的层次遍历 | Easy
- java ee4.8下载_在WildFly 8.2中修补焊接3 – Java EE 8的第一个实验RI
- 【剑指offer】面试题62:圆圈中最后剩下的数字(Java)
- 荣耀play一直显示无服务器,降价都无法补救?荣耀Play3:绝不是电子垃圾!
- Java开发十大常用网站
- mobilenet cpu 加速_(300223)半导体+芯片概念,净利润增长408%!加速上涨!
- mysql数据绑定listview_将数据库数据用代码绑定到Listview
- java怎样实现数据库 选择列属性的select查询??_除了不要 SELECT * ,使用数据库还应知道的11个技巧!...
- MySQL自定义函数(四十六)
- 所谓周末,就是在家好好做饭、好好睡觉、好好玩游戏
- 小米 pro 笔记本拆机-加固态
- C语言确定某年星期六,c语言 怎么算某年某月某日是星期几啊?
- 图解弗洛伊德算法(每一对顶点之间的最短路径问题)
- 固态硬盘的计算机需要进行磁盘碎片整理吗,浅析为什么固态硬盘不需要磁盘碎片整理...
- python分支语句_Python语言基础分支语句、循环语句.ppt
- 财务业务:会计凭证的审核
热门文章
- 开源免费跨平台且超级傻瓜的视频分割的软件VidCutter(附CSDN下载)
- 随机森林算法(Random Forest)原理分析及Python实现
- linux消息队列 性能,消息队列消息总大小的问题
- ora 01033 oracle initialization,ora-01033:oracle initialization or shutdown in progress 解决方法
- 毫米和像素怎么换算_像素和厘米怎么换算?
- win10卸载软件_WIN10系统如何关闭/卸载自带杀毒软件
- jmeter使用心得(一)
- 简易版的微信聊天存储方式
- 14 款(移动端)UI 框架
- 全网首发stm8s的硬件I2C读取bme280(bmp280)的C源程序