用Python清理收藏夹里已失效的网站,快测试一下你的收藏夹吧
最近打开好多以前收藏的网站,发现好多都已经失效了,好多以前想看还没来得及看的内容,也找不见了。。。
失效的书签们
我们日常浏览网站的时候,时不时会遇到些新奇的东西,于是我们就默默的点了个收藏或者加书签。然而当我们面对成百上千的书签和收藏夹的时候,总会头疼不已……
尤其是昨天还在更新的程序设计博客,今天就挂了永不更新。或者是昨天看的起劲的电影网站,今天直接404。失效页面这么多,每次我打开才知道失效了,并且需要手动删除,这能是一个程序员干的事情吗?
可是无论是Google浏览器还是国内浏览器,最多也就提供一个对于收藏夹的备份服务,那只能Python走起了。
Python支持的收藏夹文件格式
对于收藏夹提供的支持很少,主要还是因为收藏夹藏在浏览器里面,我们只能手动导出htm文件进行管理
内容比较简单,对前端没什么了解的我,也可以很明显看出其中的树形结构和内在逻辑。
固定格式 网址 固定格式 页面名 固定格式
很简单的想到了正则匹配,其中有两个子串。提取出来再挨个访问,看看哪个失效了,就删除,就能获得清理后的收藏夹了。
读取收藏夹文件
path = "C:\\Users\\XU\\Desktop"
fname = "bookmarks.html"
os.chdir(path)
bookmarks_f = open(fname, "r+" ,encoding='UTF-8')
booklists = bookmarks_f.readlines()
bookmarks_f.close()
因为对于前端的不熟悉,这个导出的收藏夹可以抽象的分成
- 结构代码
- 保存网页书签的关键代码
其中结构代码我们不能动,要原封不动的保留,而保存网页书签的关键代码,我们要提取内容并且进行判断保留和删除。
所以这里采用readlines函数,每行读取,单独判断。
正则匹配
pattern = r'HREF="(.*?)" .*?>(.*?)</A>'
while len(booklists)>0:bookmark = booklists.pop(0)detail = re.search(pattern, bookmark)
如果是关键代码:提取出的子串在 detail.group(1) 和 detail.group(2) 里面
而如果是结构代码:detail == None
访问页面
import requests
r = requests.get(detail.group(1),timeout=500)
编代码尝试之后发现会有这四种情况
r.status_code == requests.codes.ok
r.status_code==404
r.status_code!=404 && 无法访问 (可能是屏蔽爬虫,建议保留)
requests.exceptions.ConnectionError
类似知乎、简书基本都反爬了,所以简单的get还不能有效访问,细节不值得大费周章,直接保留就好。而error,直接用try抛出异常就好,不然程序会停止运行。
添加逻辑后:(代码可左右拖动)
while len(booklists)>0:bookmark = booklists.pop(0)detail = re.search(pattern, bookmark)if detail:#print(detail.group(1) +"----"+ detail.group(2))try:#访问r = requests.get(detail.group(1),timeout=500)#如果可则添加if r.status_code == requests.codes.ok:new_lists.append(bookmark)print( "ok------ 保留:"+ detail.group(1)+" "+ detail.group(2))else:if(r.status_code==404):print("不可访问 删除:"+ detail.group(1)+" "+ detail.group(2) +'错误码 '+str(r.status_code))else:print("其他原因 保留:"+ detail.group(1)+" "+ detail.group(2) +'错误码 '+str(r.status_code))new_lists.append(bookmark)except:print( "不可访问 删除:"+ detail.group(1)+" "+ detail.group(2))#new_lists.append(bookmark)else:#没匹配到是结构语句new_lists.append(bookmark)
程序执行情况
导出htm
bookmarks_f = open('new_'+fname, "w+" ,encoding='UTF-8')
bookmarks_f.writelines(new_lists)
bookmarks_f.close()
导入浏览器
实际应用于我的浏览器
赶紧测试一下,你的哪些收藏网页是失效的,用Python清理,了解一下?
用Python清理收藏夹里已失效的网站,快测试一下你的收藏夹吧相关推荐
- 骚操作!曾经爱过!用 Python 清理收藏夹里已失效的网站
失效的书签们 我们日常浏览网站的时候,时不时会遇到些新奇的东西( 你懂的.jpg ),于是我们就默默的点了个收藏或者加书签.然而当我们面对成百上千的书签和收藏夹的时候,总会头疼不已-- 尤其是昨天还在 ...
- “63个国外优秀测试站点链接”和其他相关资料,排除了目前已失效的网站和资料链接。...
参考了"63个国外优秀测试站点链接"和其他相关资料,排除了目前已失效的网站和资料链接. 在此分享,同时欢迎大家补充. http://groups.yahoo.com/group/L ...
- python随机将文件里的(npy格式)文件分为两个文件夹
有时会将数据集随机提取一部分进行训练. 以下的代码不仅可以将文件夹内的文件随机分为两份,也可以随机分为不同的文件夹,文件夹内的文件也可以不同. import os import numpy as np ...
- 我收藏夹里的一些常用网站,快来围观
搜索网站 Bing 在不支持谷歌搜索的前提下,使用Bing是个不错的方案. Bing国际版:https://cn.bing.com/ Stack Overflow https://stackoverf ...
- 【微信篇】PC端微信文件夹里的“微信号“
[微信篇]PC端微信文件夹里的"微信号" 更新记录最敷衍的软件一微信!!!-[蘇小沐] 文章目录 [微信篇]PC端微信文件夹里的"微信号" 1.实验环境 PC端 ...
- 百度 android 下载文件夹在哪里,手机上从百度网盘下载下来的东西在哪个文件夹里?...
手机上从百度网盘下载下来的东西在哪个文件夹里?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 手机上从百度网盘下载下来的 ...
- 怎么批量修改文件夹里照片的名字
电脑使用3年了,里面容量越来越小,3个盘都标红了.工作起来也很卡顿,我打算整理下自己的电脑.原来是产品的照片图过多,还有现场活动的营销图片.打算进行图片的清除和整理工作,但是无从下手了,图片过大数量过 ...
- 研究B站个人收藏中已失效的视频
扩展阅读: b站收藏的已经失效视频怎么才能继续看到呢? 话说B站被删的视频还有机会恢复吗 [还有该网址内容存在未知风险这种操作的么 -_-||] 研究B站已失效的视频 目录 1. 前言说明 2. 获取 ...
- Python操作FTP服务器实现文件和文件夹的上传与下载,python清理ftp目录下的所有文件和非空文件夹
Python 连接 FTP 服务器并实现文件夹上传实例演示 第一章:连接 FTP 服务器并实现文件夹上传 ① 连接 FTP 服务器 ② 区分文件和文件夹名 ③ 文件夹名包含空格处理 ④ 使用递归实现: ...
最新文章
- ecshop ajax无刷新登陆
- 实例教程一:电话拨号器
- 捕捉所有异常_详解Java中异常的分类
- Performance Metrics(性能指标1)
- html文字粒子效果简陋,5个很棒的CSS3文本粒子动画特效
- 怎么样得到平台相关的换行符?
- 星座是按阴历还是阳历
- ERROR: Could not install packages due to an EnvironmentError: [Errno 13] 权限不够的解决办法
- ABBYY FineReader PDF for Mac(PDF转换工具)
- 【转】数据结构图文解析之:二叉堆详解及C++模板实现
- 每天一道剑指offer-二进制中1的个数
- qj71c24n通讯实例_通信模块QJ71C24N应用篇手册三菱QJ71C24N用户手册 - 广州凌控
- AEJoy —— 表达式之弹性(韧性)模拟详解【JS】
- echarts 自定义 tooltip
- 微信公众号 返回40163
- 《数据清洗》 第六章 数据转换
- AD多层板拼板内电层网络丢失处理
- Pycharm2099破解
- Cisco WLC和瘦ap的配置
- reporting service odbc mysql_Reporting Services