首页 > 编程语言 >python本地保存浏览器文件夹

python本地保存浏览器文件夹

时间:2024-11-24 22:43:58浏览次数:8  
标签:浏览器 python os self 文件夹 path bookmarks root def

BIGSMATER/local-bookmark

其实就是找到本地文件,json解析然后dfs,文件名上有点坑,暴力替换即可

import json
import os
from selenium import webdriver

#refs:
#https://blog.csdn.net/Demonslzh/article/details/125062240
#https://www.cnblogs.com/superhin/p/12600358.html

hostname=os.getlogin()
CHROME_PATH = f"C:/Users/{hostname}/AppData/Local/Google/Chrome/User Data/Default"
EDGE_PATH = f"C:/Users/{hostname}/AppData/Local/Microsoft/Edge/User Data/Default"
EDGE_KILL = "taskkill /f /t /im msedge.exe"
CHROME_KILL = "taskkill /f /t /im chrome.exe"
print(EDGE_PATH)

class BookMark:

    def __init__(self, Path=EDGE_PATH):
        # chromepath
        self.Path = Path
        # refresh bookmarks
        self.bookmarks = self.get_bookmarks()
        self.driver = webdriver.Edge()

    def get_folder_data(self):
        self.creatfolder(r"./本地收藏夹") #可以改成绝对路径
        for mark_name, item in self.bookmarks["roots"].items():
            self.dfs(item,r"./本地收藏夹")

    def get_bookmarks(self):
        'update chrome data from chrome path'
        # parse bookmarks
        assert os.path.exists(
            os.path.join(self.Path,
                         'Bookmarks')), "can't found ‘Bookmarks’ file,or path isn't a chrome browser cache path!"
        with open(os.path.join(self.Path, 'Bookmarks'), encoding='utf-8') as f:
            return json.loads(f.read())

    def creatfolder(self,path):
        try:
            os.makedirs(path)
        except Exception:
            print(Exception)
    
    def creatmhtml(self,path,url):
        res={"data":"null"}
        try:
            self.driver.get(url)
        # 1. 执行 Chome 开发工具命令,得到mhtml内容
        
            res = self.driver.execute_cdp_cmd('Page.captureSnapshot', {})
        except Exception:
            print(Exception)
        # 2. 写入文件
        with open((r"{}".format(path+".mhtml")), 'w', newline='') as f:#吾爱破解 - LCG - LSG|安卓破解|病毒分析|www.52pojie.cn.mhtml 会报错,
                                                                       #研究许久发现文件名不能有|以及其他一些符号,具体自己找个文件重命名试一下即可,会有提示的
            f.write(res['data'])

    def dfs(self,root,path):
        e="bug"
        if root["type"]=="url":
            self.creatmhtml(r"{}".format(path+'/'+root["name"].translate(str.maketrans({'/':e,'\\':e,'|':e,':':e,'*':e,'?':e,'"':e,'<':e,'>':e}))),root["url"])
        elif root["type"]=="folder":
            self.creatfolder(path+'/'+root["name"].translate(str.maketrans({'/':e,'\\':e,'|':e,':':e,'*':e,'?':e,'"':e,'<':e,'>':e})))
            for i in root["children"]:
                    self.dfs(i,r"{}".format(path+'/'+root["name"].translate(str.maketrans({'/':e,'\\':e,'|':e,':':e,'*':e,'?':e,'"':e,'<':e,'>':e}))))

    
test=BookMark()
test.get_folder_data()

BIGSMATER/local-bookmark

标签:浏览器,python,os,self,文件夹,path,bookmarks,root,def
From: https://www.cnblogs.com/BIGSMATER/p/18566553

相关文章

  • 如何在HTML页面中嵌入SWF文件,并通过浏览器运行出来
    1、首先当然是有一个浏览器,(我就用360急速版了,没办法,其实谷歌也可以,是360急速版,),360本身具有flash插件,你只需要启用就行1)先打开360极速版浏览器,进入“自定义和控制”。2)在选项中,点击“高级设置”选项。3)最后,在网页设置中找到网页内容设置,找到flash,点击“点击运行” 2、接下来......
  • Python学习笔记(4)Python多线程
    线程可以分为:内核线程:由操作系统内核创建和撤销。用户线程:不需要内核支持而在用户程序中实现的线程。Python3线程中常用的两个模块为:_threadthreading(推荐使用)_thread提供了低级别的、原始的线程以及一个简单的锁,它相比于threading模块的功能还是比较有限的......
  • python语法第二篇
    练习:输入一个长字符串,判断其中数字的个数。#输入一个长字符串,判断其中数字的个数。s1=input("请输入一个包含字母和数字的字符串:")#wdqwddwq78dq9fas868qw997fsa75qwf89f8av9a0gggw8q68num=0#定义一个变量用于计数数字的个数foriins1:#字符串是可以直接被for......
  • Python中print()函数的使用
    目录print函数的使用场景python中的格式化输出为什么需要格式化输出百分号输出format方法格式输出foramt的基本语法format的简写语法如何确定什么时候使用百分号格式化和format格式化print函数的使用场景首先有代码基础的,都习惯上在编写代码上习惯性加一个print()函......
  • D78【 python 接口自动化学习】- python基础之HTTP
    day78pycharm创建项目并进行接口请求学习日期:20241124学习目标:http定义及实战--pycharm创建项目并进行接口请求学习笔记:安装requests安装方式:pip/pip3installrequests官网教程:Requests:HTTPforHumans™—Requests2.32.3documentation安装方式方法一:终端安......
  • Python小白学习教程从入门到入坑------第三十三课 线程(语法进阶)
    一、多任务在Python中,多任务处理指的是同时执行多个任务,以提高程序的效率和响应能力多任务处理在需要处理大量I/O操作(如网络请求、文件读写等)或同时执行多个独立任务时特别有用Python提供了几种实现多任务处理的方法,主要包括多线程、多进程和异步编程二、多线程2.1进程和......
  • 解释 Python 中的可变与不可变数据类型?
    在Python中,数据类型分为可变(mutable)和不可变(immutable)两种。理解这两种类型的区别对于编写高效、可靠的代码至关重要。作为面试官,我会详细解释这两者的区别,并提供一些实际开发中的使用建议和注意事项。1. 不可变数据类型不可变数据类型是指一旦创建后,其值不能被修改的数......
  • PythonDay2Base
    PythonDay2Base前文见上一篇文章数据类型详解字符串str补充startswith判断字符串是否以某个小字符串开头s1="shujia数加科技学习study"b=s1.startswith('sh')print(b)#Trueendswith判断字符串是否以某个小字符串结尾s1="shujia数加科技学习study"......
  • 632.最小区间 全网最详细python3解答 分析 代码 Python解决方案:最小区间问题
    Python解决方案:最小区间问题题目背景在这道题中,给定了k个非递减排列的整数列表。目标是找到一个最小区间[a,b],使得每个列表中至少有一个数包含在该区间内。为了定义“最小区间”,我们用以下规则来比较区间[a,b]和[c,d]:如果b-a<d-c,则[a,b]更小。如果......
  • 深入了解 Python 的 Counter:一个强大的计数工具
    深入了解Python的Counter:一个强大的计数工具在Python中,Counter是collections模块中的一个子类,用于快速计数,是处理频率统计的利器。它看起来像字典,但功能远不止于此。什么是Counter?Counter是字典的一个扩展,它的设计目标是计数:键(key):要计数的元素。值(value):该元素......