作者: 云外孤鸟https://www.cnblogs.com/cloudbird/p/11336663.html
app_callback.py
主要用于回调,可以理解为实现后台功能。
history_data.py
文件。我们一一分析。
select_statement
,调用
query_sqlite_db()
函数,获取解析后的历史记录文件数据。并对返回后的历史记录数据文件按照不同元素规则进行排序。至此,经过排序的解析后的历史记录数据文件获取成功。
app_configuration.py
和
app.py
文件。包括设置web服务器的端口号,访问权限,静态资源目录等。
app_layout.py
和
app_plot.py
以及
assets
目录。
app_layout.py
中,这些组件的配置大多一样,和平常的html, css配置一样,所以我们仅仅以配置
页面访问次数排名组件
为例子。
app_plot.py
中,主要是以绘制图表相关的。使用的是
plotly
库,这是一个用于具有web交互的画图组件库。
页面访问频率排名 柱状图
为例子,讲讲如何使用
plotly
库进行绘制。
history_data
进行遍历,获得
url
数据,并调用
url_simplification(url)
对齐进行简化。接着,依次将
简化后的url
存入字典中。
get_top_k_from_dict(dict_data, k)
,从字典
dict_data
中获取前
k
个最大值的数据。
go.Bar()
绘制柱状图,其中,
x
和
y
代表的是属性和属性对应的数值,为
list
格式
。
xaxis
和
yaxis`分别设置相应坐标轴的标题
figure
对象,以便于传输给前端。
assets
目录下包含的数据为
image
和
css
,都是用于前端布局。
app_callback.py
文件。这个文件使用回调的方式对前端页面布局进行更新。
页面访问频率排名
的回调函数:
dash.dependencies.Input
指的是触发回调的数据,而
dash.dependencies.Input('input_website_count_rank', 'value')
表示当
id
为
input_website_count_rank
的组件的
value
发生改变时,会触发这个回调。
而该回调经过
update(value, store_memory_history_data)
的结果会输出到
id
为
graph_website_count_rank
的
value
,通俗来讲,就是改变它的值。
def update(value, store_memory_history_data)
的解析。
首先是判断输入数据
store_memory_history_data
是否不为空对象,接着读取历史记录文件
history_data
,接着调用刚才所说的
app_plot.py
文件中的
plot_bar_website_count_rank()
,返回一个
figure
对象,并将这个对象返回到前端。
至此,前端页面的布局就会显示出
页面访问频率排名
的图表了。
contents
是否不为空,接着将客户端上传的文件进行base64解码。
并且,为客户端上传的文件添加后缀,防止文件重复覆盖,最终将客户端上传的文件写入本地磁盘文件。
None
select_statement
指的是查询数据库的规则,规则如下:
urls
中选择(SELECT)出以下字段
urls.id
,
urls.url
,
urls.title
,
urls.last_visit_time
,
urls.visit_count
,依次代表
URL的ID
,
URL的地址
,
URL的标题
,
URL最后的访问时间
,
URL的访问次数
。
visits
中选择(SELECT)出以下字段
visits.visit_time
,
visits.from_visit
,
visits.transition
,
visits.visit_duration
,分别代表的是
访问时间
,
从哪个链接跳转过来的
,
访问跳转
,
访问停留的时间
。
步骤1
和
步骤2
的结果进行连接,形成一个表格。然后从中(WHERE)筛选出符合
urls.id = visits.url
的行。在
urls
中,
id
代表的是URL的
id
,在
visits
中,
url
代表的也是URL的
id
,所以只有当两者相等,才能连接一起,才能保留,否则就要去除这一行。
sorted
,这个函数依次是以
x[0]
,
x[1]
,
x[2]
,
x[3]
,
x[4]
,
x[5]
,
x[6]
,
x[7]
,
x[8]
进行排序,也就是指的是
urls.id
,
urls.url
,
urls.title
,
urls.last_visit_time
,
urls.visit_count
,
visits.visit_time
,
visits.from_visit
,
visits.transition
,
visits.visit_duration
。
urls.id
|
url的编号
|
urls.url
|
url的地址
|
urls.title
|
url的标题
|
urls.last_visit_time
|
url的最后访问时间
|
urls.visit_count
|
url的访问次数
|
urls.visit_time
|
url的访问时间
|
urls.from_visit
|
从哪里访问到这个url
|
urls.transition
|
url的跳转
|
urls.visit_duration
|
url的停留时间
|
C:Users%USERNAME%AppDataLocalGoogleChromeUser DataDefaultHistory
bash # 打开命令行cmd,输入以下命令, 自动将History文件复制到桌面, 文件名为History, 没有后缀名 copy "C:Users%USERNAME%AppDataLocalGoogleChromeUser DataDefaultHistory" "C:Users%USERNAME%DesktopHistory"
%USERNAME%
为你的用户名, 如果执行命令出现错误, 请手动找到该历史记录文件。
C:Documents and Settings%USERNAME%Local SettingsApplication DataGoogleChromeUser DataDefaultHistory
%USERNAME%
为你的用户名, 如果执行命令出现错误, 请手动找到该历史记录文件。
~/Library/Application Support/Google/Chrome/Default/History
bash # 打开terminal,输入以下命令, 自动将History文件复制到桌面, 文件名为History, 没有后缀名 cp ~/Library/Application Support/Google/Chrome/Default/History ~/Desktop/History
Application Support
中的空格需要转义,所以改为
Application Support
~/.config/google-chrome/Default/History
bash # 打开terminal,输入以下命令, 自动将History文件复制到桌面, 文件名为History, 没有后缀名 cp ~/.config/google-chrome/Default/History ~/Desktop/History
如果提示路径不存在, 请自行获取History文件