百度网盘链接失效检测
本帖最后由 天下有道 于 2023-4-13 16:04 编辑昨晚我一个朋友发了个游戏链接给我,一个excel文件,有上千个游戏,我随便点击了几个,发现都失效了,为了不做重复工作,
因此今天写了一个python脚本,我搜了一下论坛发现没有人写过这个玩意,如果有相同类似的,请管理员删除我这个帖子
主要功能:使用selenium自动化工具检测百度网盘链接是否失效
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 该程序适用于检验多个网盘链接的有没有失效
# 设置Edge浏览器驱动程序路径
driver_path = 'D:\Download\edgedriver_win64\msedgedriver.exe'
# 启动Edge浏览器
driver = webdriver.Edge(executable_path=driver_path)
def checklink(linkList:dict):
for link,code in linkList.items():
try:
req=requests.get(link)
if '百度网盘-链接不存在' in req.text:
print(f'链接:{link},百度网盘文件不存在或百度链接已失效')
return False
except Exception as e:
print(f'链接:{link},百度网盘链接访问失败:{e}')
return False
# 在当前浏览器会话中加载网页
driver.get(link)
# start=time.time()
# 找到提取码输入框
passwd_input = driver.find_element(By.ID, 'accessCode')
# 输入提取码
passwd_input.send_keys(code)
# end=time.time()
# print(f'耗时:{(end-start)*1000} 毫秒')
# 找到提交按钮并点击
submit_button = driver.find_element(By.ID, 'submitBtn')
# 模拟点击按钮
submit_button.submit()
# 延时两秒等待网页加载完成
time.sleep(2)
# 获取输入提取码后返回的title来判断网盘里面是否存在文件
result=driver.title
if '百度网盘 请输入提取码' in result:
print(f'链接:{link},提取码错误')
return False
if '百度网盘-链接不存在' in result:
print(f'链接:{link},百度网盘文件不存在或百度链接已失效')
return False
else:
print(f'链接:{link},百度网盘文件有效')
return False
# 关闭浏览器
# driver.quit()
if __name__=='__main__':
checklink({})
PS:4.13 增加提取码错误的判断,有人说直接用requests库可以直接判断,但是我考虑到还有一些网盘链接需要提取码,才能进入分享页面查看是否有没有文件存在,我遇到过需要输入提取码,但是里面的文件是没有的情况 这个其实可以用requests做的,selenium太慢了 天下有道 发表于 2023-4-12 16:58
有一些有提取码的,如果没有提取码,可以直接用requests库来,我原本是用的是requests库,但是考虑到要输 ...
一般来说需要提取码就说明分享是仍然有效的。分享里面没有文件是分享者的问题,一般分享者提前分享链接出来,但是后期删除了里面的文件,或者里面的文件陆陆续续被度娘以某种不可抗力给删掉了,删到最后就是空分享链接了。但是分享者还是可以往分享链接里添加文件的。 谢谢分享 2513002960 发表于 2023-4-12 16:56
这个其实可以用requests做的,selenium太慢了
有一些有提取码的,如果没有提取码,可以直接用requests库来,我原本是用的是requests库,但是考虑到要输入提取码,点击按钮这些就用这个自动化工具了 本帖最后由 sgbyg 于 2023-4-12 17:05 编辑
requests比较快{:301_998:} 棒,有的时候要测试链接一个一个点太笨了。{:301_986:} 好,谢谢楼主分享 感谢分享! 感谢分享,虽然现在还不会用。 太棒了,正好需要,感谢楼主分享{:1_893:}