最近打开好多以前收藏的网站,发现好多都已经失效了,好多以前想看还没来得及看的内容,也找不见了。。。

失效的书签们

我们日常浏览网站的时候,时不时会遇到些新奇的东西,于是我们就默默的点了个收藏或者加书签。然而当我们面对成百上千的书签和收藏夹的时候,总会头疼不已……


尤其是昨天还在更新的程序设计博客,今天就挂了永不更新。或者是昨天看的起劲的电影网站,今天直接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清理收藏夹里已失效的网站,快测试一下你的收藏夹吧相关推荐

  1. 骚操作!曾经爱过!用 Python 清理收藏夹里已失效的网站

    失效的书签们 我们日常浏览网站的时候,时不时会遇到些新奇的东西( 你懂的.jpg ),于是我们就默默的点了个收藏或者加书签.然而当我们面对成百上千的书签和收藏夹的时候,总会头疼不已-- 尤其是昨天还在 ...

  2. “63个国外优秀测试站点链接”和其他相关资料,排除了目前已失效的网站和资料链接。...

    参考了"63个国外优秀测试站点链接"和其他相关资料,排除了目前已失效的网站和资料链接. 在此分享,同时欢迎大家补充. http://groups.yahoo.com/group/L ...

  3. python随机将文件里的(npy格式)文件分为两个文件夹

    有时会将数据集随机提取一部分进行训练. 以下的代码不仅可以将文件夹内的文件随机分为两份,也可以随机分为不同的文件夹,文件夹内的文件也可以不同. import os import numpy as np ...

  4. 我收藏夹里的一些常用网站,快来围观

    搜索网站 Bing 在不支持谷歌搜索的前提下,使用Bing是个不错的方案. Bing国际版:https://cn.bing.com/ Stack Overflow https://stackoverf ...

  5. 【微信篇】PC端微信文件夹里的“微信号“

    [微信篇]PC端微信文件夹里的"微信号" 更新记录最敷衍的软件一微信!!!-[蘇小沐] 文章目录 [微信篇]PC端微信文件夹里的"微信号" 1.实验环境 PC端 ...

  6. 百度 android 下载文件夹在哪里,手机上从百度网盘下载下来的东西在哪个文件夹里?...

    手机上从百度网盘下载下来的东西在哪个文件夹里?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 手机上从百度网盘下载下来的 ...

  7. 怎么批量修改文件夹里照片的名字

    电脑使用3年了,里面容量越来越小,3个盘都标红了.工作起来也很卡顿,我打算整理下自己的电脑.原来是产品的照片图过多,还有现场活动的营销图片.打算进行图片的清除和整理工作,但是无从下手了,图片过大数量过 ...

  8. 研究B站个人收藏中已失效的视频

    扩展阅读: b站收藏的已经失效视频怎么才能继续看到呢? 话说B站被删的视频还有机会恢复吗 [还有该网址内容存在未知风险这种操作的么 -_-||] 研究B站已失效的视频 目录 1. 前言说明 2. 获取 ...

  9. Python操作FTP服务器实现文件和文件夹的上传与下载,python清理ftp目录下的所有文件和非空文件夹

    Python 连接 FTP 服务器并实现文件夹上传实例演示 第一章:连接 FTP 服务器并实现文件夹上传 ① 连接 FTP 服务器 ② 区分文件和文件夹名 ③ 文件夹名包含空格处理 ④ 使用递归实现: ...

最新文章

  1. ecshop ajax无刷新登陆
  2. 实例教程一:电话拨号器
  3. 捕捉所有异常_详解Java中异常的分类
  4. Performance Metrics(性能指标1)
  5. html文字粒子效果简陋,5个很棒的CSS3文本粒子动画特效
  6. 怎么样得到平台相关的换行符?
  7. 星座是按阴历还是阳历
  8. ERROR: Could not install packages due to an EnvironmentError: [Errno 13] 权限不够的解决办法
  9. ABBYY FineReader PDF for Mac(PDF转换工具)
  10. 【转】数据结构图文解析之:二叉堆详解及C++模板实现
  11. 每天一道剑指offer-二进制中1的个数
  12. qj71c24n通讯实例_通信模块QJ71C24N应用篇手册三菱QJ71C24N用户手册 - 广州凌控
  13. AEJoy —— 表达式之弹性(韧性)模拟详解【JS】
  14. echarts 自定义 tooltip
  15. 微信公众号 返回40163
  16. 《数据清洗》 第六章 数据转换
  17. AD多层板拼板内电层网络丢失处理
  18. Pycharm2099破解
  19. Cisco WLC和瘦ap的配置
  20. reporting service odbc mysql_Reporting Services

热门文章

  1. 安卓Runnable接口解释
  2. JS字符串类型 运算符 分支
  3. windows上安装启动pgsql,postgres
  4. Linux:dmesg命令参数及用法详解(linux显示开机信息命令)
  5. HMS Core Insights第二期直播回顾 –华为定位技术让你重拾方向感
  6. hive删除表数据方法
  7. 泛微车辆租赁管理方案,车辆信息精细化管理,合同、费用实时掌握
  8. linux e2fsck区别,resize2fs与ext2online,fsck与e2fsck区别
  9. 如何预测运动员(射击)的成绩?
  10. 微信小程序数据刷新不出来