diff --git a/11.一键分析你的上网行为(web页面可视化)/README.MD b/11.一键分析你的上网行为(web页面可视化)/README.MD index 633e066..158610e 100644 --- a/11.一键分析你的上网行为(web页面可视化)/README.MD +++ b/11.一键分析你的上网行为(web页面可视化)/README.MD @@ -375,6 +375,115 @@ def update(contents):

+接下来,就是我们数据提取最核心的部分了,即从Chrome历史记录文件中提取出我们想要的数据。由于Chrome历史记录文件是一个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' + +``` + +上面`select_statement`指的是查询数据库的规则,规则如下: +1. 从(FROM)表`urls`中选择(SELECT)出以下字段`urls.id`, `urls.url`, `urls.title`, `urls.last_visit_time`, `urls.visit_count`,依次代表`URL的ID`,`URL的地址`,`URL的标题`,`URL最后的访问时间`,`URL的访问次数`。 + +2. 接着,从(FROM)表`visits`中选择(SELECT)出以下字段`visits.visit_time`, `visits.from_visit`, `visits.transition`, `visits.visit_duration`,分别代表的是`访问时间`,`从哪个链接跳转过来的`,`访问跳转`,`访问停留的时间`。 + +3. 对`步骤1`和`步骤2`的结果进行连接,形成一个表格。然后从中(WHERE)筛选出符合`urls.id = visits.url`的行。在`urls`中,`id`代表的是URL的`id`,在`visits`中,`url`代表的也是URL的`id`,所以只有当两者相等,才能连接一起,才能保留,否则就要去除这一行。 + +4. 使用排序函数`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`。 + +5. 返回一个排序好的数据 + +这里我们列出每个字段代表的意思: +| 字段名 | 代表 | +| ---- | ---- | +| 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的停留时间 | + +
+
+ + +#### 6. 如何获取Chrome历史记录文件 +##### Windows Vista, Windows 7, Windows 8, Windows 10 +- 历史记录文件位置: `C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\History` + +- 拷贝历史记录文件到桌面: +```bash +# 打开命令行cmd,输入以下命令, 自动将History文件复制到桌面, 文件名为History, 没有后缀名 +copy "C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\History" "C:\Users\%USERNAME%\Desktop\History" +``` + +- **注意说明**: `%USERNAME%`为你的用户名, 如果执行命令出现错误, 请手动找到该历史记录文件。 + +
+ +##### Windows XP + +- 历史记录文件位置: `C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Google\Chrome\User Data\Default\History` + +- 拷贝历史记录文件到桌面: +```bash +# 打开命令行cmd,输入以下命令, 自动将History文件复制到桌面, 文件名为History, 没有后缀名 +copy "C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Google\Chrome\User Data\Default\History" "C:\Documents and Settings\%USERNAME%\Desktop\History" +``` + +- **注意说明**: `%USERNAME%`为你的用户名, 如果执行命令出现错误, 请手动找到该历史记录文件。 + +
+ +##### Mac OS X + +- 历史记录文件位置: `~/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` + +
+ +##### Linux/ Unix +- 历史记录文件位置: `~/.config/google-chrome/Default/History` + +- 拷贝历史记录文件到桌面: +```bash +# 打开terminal,输入以下命令, 自动将History文件复制到桌面, 文件名为History, 没有后缀名 +cp ~/.config/google-chrome/Default/History ~/Desktop/History +``` + +- **注意说明**: `如果提示路径不存在, 请自行获取History文件` + +
+
+
### 如何运行 在线演示程序:[http://39.106.118.77:8090](http://39.106.118.77:8090)(普通服务器,勿测压)