## 一键分析你的上网行为, 看看你平时上网都在干嘛?
## Chrome浏览器历史记录文件可视化
### 简介
**想看看你最近一年都在干嘛?看看你平时上网是在摸鱼还是认真工作?想写年度汇报总结,但是苦于没有数据?现在,它来了。**
这是一个能让你了解自己的浏览历史的Chrome浏览历史记录分析程序,**他适用于Chrome浏览器或者以Chromium为内核的浏览器。目前国内大部分浏览器均是以Chromium为内核的浏览器,所以基本上都可以使用。但是不支持以下浏览器:IE浏览器、Firefox浏览器、Safari浏览器。**
在该页面中你将可以查看有关自己在过去的时间里所访问浏览的域名、URL以及忙碌天数的前十排名以及相关的数据图表。
<br />
<br />
### 部分截图
![](demo.gif)
<br />
<br />
### 代码思路
#### 1. 目录结构
首先,我们先看一下整体目录结构
```bash
Code
├─ app_callback.py 回调函数,实现后台功能
├─ app_configuration.py web服务器配置
├─ app_layout.py web前端页面配置
├─ app_plot.py web图表绘制
├─ app.py web服务器的启动
├─ assets web所需的一些静态资源文件
│ ├─ css web前端元素布局文件
│ │ ├─ custum-styles_phyloapp.css
│ │ └─ stylesheet.css
│ ├─ image web前端logo图标
│ │ ├─ GitHub-Mark-Light.png
│ └─ static web前端帮助页面
│ │ ├─ help.html
│ │ └─ help.md
├─ history_data.py 解析chrome历史记录文件
└─ requirement.txt 程序所需依赖库
```
- app_callback.py
该程序基于python,使用dash web轻量级框架进行部署。`app_callback.py`主要用于回调,可以理解为实现后台功能。
- app_configuration.py
顾名思义,对web服务器的一些配置操作。
- app_layout..py
web前端页面配置,包含html, css元素。
- app_plot.py
这个主要是为实现一些web前端的图表数据。
- app.py
web服务器的启动。
- assets
静态资源目录,用于存储一些我们所需要的静态资源数据。
- history_data.py
通过连接sqlite数据库,并解析Chrome历史记录文件。
- requirement.txt
运行本程序所需要的依赖库。
<br />
#### 2. 解析历史记录文件数据
与解析历史记录文件数据有关的文件为`history_data.py`文件。我们一一分析。
```python
# 查询数据库内容
def query_sqlite_db(history_db, query):
# 查询sqlite数据库
# 注意,History是一个文件,没有后缀名。它不是一个目录。
conn = sqlite3.connect(history_db)
cursor = conn.cursor()
# 使用sqlite查看软件,可清晰看到表visits的字段url=表urls的字段id
# 连接表urls和visits,并获取指定数据
select_statement = query
# 执行数据库查询语句
cursor.execute(select_statement)
# 获取数据,数据格式为元组(tuple)
results = cursor.fetchall()
# 关闭
cursor.close()
conn.close()
return results
```
**该函数的代码流程为:**
1. 连接sqlite数据库,执行查询语句,返回查询结构,最终关闭数据库连接。
```python
# 获取排序后的历史数据
def get_history_data(history_file_path):
try:
# 获取数据库内容
# 数据格式为元组(tuple)
select_statement = "SELECT urls.id, urls.url, urls.title, urls.last_visit_time, urls.visit_count, visits.visit_time, visits.from_visit, visits.transition, visits.visit_duration FROM urls, visits WHERE urls.id = visits.url;"
result = query_sqlite_db(history_file_path, select_statement)
# 将结果按第1个元素进行排序
# sort和sorted内建函数会优先排序第1个元素,然后再排序第2个元素,依此类推
result_sort = sorted(result, key=lambda x: (x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8]))
# 返回排序后的数据
return result_sort
except:
# print('读取出错!')
return 'error'
```
**该函数的代码流程为:**
1. 设置数据库查询语句`select_statement`,调用`query_sqlite_db()`函数,获取解析后的历史记录文件数据。并对返回后的历史记录数据文件按照不同元素规则进行排序。至此,经过排序的解析后的历史记录数据文件获取成功。
<br />
#### 3. web服务器基本配置
与web服务器基本配置有关的文件为`app_configuration.py`和`app.py`文件。包括设置web服务器的端口号,访问权限,静态资源目录等。
<br />
#### 4. 前端页面部署
与前端部署有关的文件为`app_layout.py`和`app_plot.py`以及`assets`目录。
前端布局主要包括以下几个元素:
- 上传历史记录文件组件
- 绘制页面访问次数组件
- 绘制页面访问停留总时间排名组件
- 每日页面访问次数散点图组件
- 某日不同时刻访问次数散点图组件
- 访问次数最多的10个URL组件
- 搜索关键词排名组件
- 搜索引擎使用情况组件
在`app_layout.py`中,**这些组件的配置大多一样,和平常的html, css配置一样,所以我们仅仅以配置`页面访问次数排名组件`为例子。**
```python
# 页面访问次数排名
html.Div(
style={'margin-bottom':'150px'},
children=[
html.Div(
style={'border-top-style':'solid','border-bottom-style':'solid'},
className='row',
children=[
html.Span(
children='页面访问次数排名, ',
style={'font-weight': 'bold', 'color':'red'}
),
html.Span(
children='显示个数:',
),
dcc.Input(
id='input_website_count_rank',
type='text',
value=10,
style={'margin-top':'10px', 'margin-bottom':'10px'}
),
]
),
html.Div(
style={'position': 'relative', 'margin': '0 auto', 'width': '100%', 'padding-bottom': '50%', },
children=[
dcc.Loading(
children=[
dcc.Graph(
id='graph_website_count_rank',
style={'position': 'absolute', 'width': '100%', 'height': '100%', 'top': '0',
'left': '0', 'bottom': '0', 'right': '0'},
config={'displayModeBar': False},
),
],
type='dot',
style={'position': 'absolute', 'top': '50%', 'left': '50%', 'transform': 'translate(-50%,-50%)'}
),
],
)
]
)
```
可以看到,虽然是python编写的,但是只要具备前端经验的人,都可以轻而易举地在此基础上新增或者删除一些元素,所以我们就不详细讲如何使用html和css了。
在`app_plot.py`中,主要是以绘制图表相关的。使用的是`plotly`库,这是一个用于具有web交互的画图组件库。
这里以绘制`页面访问频率排名 柱状图`为例子,讲讲如何使用`plotly`库进行绘制。
```python
# 绘制 页面访问频率排名 柱状图
def plot_bar_website_count_rank(value, history_data):
# 频率字典
dict_data = {}
# 对历史记录文件进行遍历
for data in history_data:
url = data[1]
# 简化url
key = url_simplification(url)
if (key in dict_data.keys()):
dict_data[key] += 1
bala5569
- 粉丝: 1546
- 资源: 392
最新资源
- 详细注释的K均值聚类算法Matlab代码示例,可修改样本数据进行聚类分析,基本的K均值聚类算法matlab代码,给了一组样本数据作为例子,注释详细,聚类的样本数据可以进行修改 ,核心关键词:K均值聚
- 压力位移监控软件:LabVIEW实现压装过程数据采集与曲线分析判断系统(LabVIEW 2018版),压力位移监控软件,压装过程压力位移判断 学习LabVIEW过程,做的一个demo,程序功能主要是采
- AEB紧急制动系统控制模型:Carsim与Simulink联合操作指南及可选模型说明文件,AEB紧急制动系统控制模型carsim+simulink可选模型说明文件和操作说明 ,关键词:AEB紧急制动系
- Dsp28335与FPGA并行通信:高速数据传输与接收,实现PWM外扩功能的高效协同处理,Dsp28335 与FPGA的并行通信(最高速率150MHZ),可以将DSP数据传给FPGA的指定位置,以及从
- 三菱PLC QD70模块FB功能块在私服电机控制中的应用:清晰编程方式及全面注释,Q系列与L系列通用模板,成熟稳定,高借鉴价值,PLC电气爱好者的经典案例 ,三菱PLC QD70模块功能块FB ,用私
- 三相四桥臂APF双闭环控制优化电网电流及母线电压Simulink仿真图研究(PID控制效果展示),三相四桥臂APF的双闭环控制的simulink仿真图,用的是Matlab2018a,可以看出,控制前电
- Matlab预测电动车负荷:私家车、公交车、出租车类型全覆盖,参数灵活修改程序,Matlab考虑三种电动车类型:私家车、公交车、出租车,对电动车负荷进行预测,程序中参数便于修改 ,核心关键词:Mat
- PYNQ框架下实现YOLOv2 Tiny目标检测算法:FPGA加速CNN处理,HDMI显示与USB摄像头输入,1秒内处理一帧图像,PYNQ实现yolov2 tiny目标检测算法 技术指标: *HLS代
- 新能源汽车高效DC充电机:TMS高性能芯片驱动,升降压充电方案,完备的电路设计文档与程序代码,新能源汽车6kw充电机,DC to DC双向升降压48~54VDC输入,输出320VDC,双向可以输入
- 基于Comsol 5.6软件的圆柱锂电池(18650)电化学与热行为模型参数配置与结果分析,18650圆柱锂电池comsol5.6模型 参数已配置,电化学生热研究,三种放电倍率,参数化扫描,各种结果
- 基于Spring Boot与Netty的Java在线客服系统源码,实时统计管理,会话聊天与坐席管理一体化 ,Java在线客服系统源码 springboot客服聊天源码 网页客服源码 netty通信技术
- 基于蒙特卡洛模拟的多类型电动汽车负荷预测:Matlab程序详解与实例学习指南,多类型电动汽车 负荷预测 蒙特卡洛 SOC 基于蒙特卡洛的多种类型电动汽车负荷预测 软件:Matlab 介绍:基于蒙特卡洛
- STM32三菱IO自定义方案:烧写HEX固件可轻松在线管理梯形图与称重功能,扩展CAN总线及多通讯接口,多样模拟量输入输出与高速脉冲控制,STM32三菱1N,2N,PLC方案 可以任意修改IO用途(除
- 基于核极限学习机(KELM)算法的数据回归预测分析Matlab代码实现,基于核极限学习机(KELM)的数据回归预测 matlab代码 ,核心关键词:基于核极限学习机(KELM)的数据回归预测; MA
- 永磁同步电机无位置算法滑模观测器模型:纯手工搭建电流环与定位控制策略实现,实践与经验分享附论文出处,永磁同步电机无位置算法,采用的是滑模观测器,电机为内嵌电机,本模型包含经典电流环,定位+开环+闭环经
- AT89C51单片机设计的智能空调控制系统:四种工作模式,按键与手机App遥控,半导体制冷除湿,超声波加湿,温湿度监测,LCD显示及完整设计文档,at89c51单片机设计的智能空调系统 制冷制热加湿除
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈