Vue.js写一个本地网址导航网站

使用html+js+css+Vue.js制作网址导航

你是否有过这样的烦恼?有些使用频繁网站总是需要经过搜索筛选才能到达,有些很实用的网站需要时又要重新寻找。尽管浏览器给我们提供了书签功能,可以让我们保存需要的网页,但是随着书签数目的增加,浏览器启动速度也会变慢…

因此我们可以自己制作一个网址导航,来将部分频繁访问的网站和实用网站根据需求分类收集汇总到一起,也可以将他人资源导航汇入囊中。

为了可以在浏览器中运行打开,我们直接用html来实现该需求,也不借助服务器存储数据:

具体思路:
  1. 套用模板

    直接使用网上的html模板,合理利用网络资源 html模板参考地址:https://templatemo.com/live/templatemo_556_catalog_z

  • html框架:选用网上模板,然后保留需要的页面、功能及样式
  • js:实现功能特效页面交互,如上图的左侧导航栏不可避免的需要用到js
  • css:主要是自定义样式和基于模板样式修改
  1. 汇入数据

    最开始完成这个项目时,还没有接触vue.js,数据也不是很多,也就纯手动汇入了。但随着积累的资源网站越来越多,发现代码冗余十分严重,增加数据也显得力不从心,还容易出错。这时就需要使用vue.js了,利用vue的特性可以将重复代码剔除,将数据转移到data里面,然后使用json语法构建对象数组,v-for遍历渲染输出。

    //案例使用vue2版本
    new Vue({el: '#app',data() {return {dataList: [id: '', list: [{}]]}}
    })
    

    Vue.js简单介绍:

    Vue本身是一个渐进式的web前端开发框架,其允许我们只在项目中的部分页面中使用Vue进行开发,也允许我们仅仅使用Vue中的部分功能来进行项目开发。

  2. 具体实现

    具体代码实现不予描述

使用Python进行html爬取和数据写入操作

假设我们已经写好了框架,万事俱备,只缺数据了。那么如何高效写入数据?

1. excel转json

虽然将数据分离出了html,但是对面160多条json格式的数据,纯手写费时费力费心情,心理试想寻找一个文本转json格式的在线网站去帮助我规范格式,我只需要将数据源写入txt、csv、excel文件中就行了。遇事不决先百度:果然找到了一个在线Excel转json工具

使用方法:首行字段(列名)对应json中的key,然后将数据对号入座,保存excel,拖拽到该网站,然后复制需要的json数据。

上述操作相比在data里面直接手动能够大大提升效率。但是新的问题出现了,对于有强迫症的我而言,在js文件中有1000多行的数据代码变相也是一种冗余,因为json格式的数据可以放入到json文件中。

2. vue.js读取json文件

在网上找寻了一番,发现可以使用axios、jquery和jsonp,但是最终结果都是不理想的。因为现实是需要搭建后端服务器才可行,毕竟跨域请求这个问题在vue项目中就够折磨我的了。以下是我的测试过程:

1.在线引入axios

<script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script>
loadData () {this.$axios.get('json/data.json').then((res) => {//用axios的方法引入地址this.res=res//赋值console.log(res)})}

测试发现本地无法读取,但使用vscode+live server可以读取

2.使用jquery、ajax,jsonp

在js和vue项目获取本地json文件以及浏览器跨域问题 的指导下,测试发现都不行,部分能正常读取但都无法在页面显示

 mounted() {// 这里一定要使用常量 const来引用this,不然可能会出现this指向问题dataList = $.ajax({url: "/json/data.json",//json文件位置,文件名type: "GET",//请求方式为getdataType: "json", //返回数据格式为jsonasync: false,success: function(data) {//请求成功完成后要执行的方法 console.log(data);}}); console.log(dataList.responseJSON);this.dataList = dataList.responseJSON},

总结:由于不打算使用服务器来存储数据,所以分离数据到json文件目前还没有更好的解决办法

3.使用python进行数据操作

当我们从0开始构建我们的导航网站时,每一次数据直接录入excel就大功完成一半了。然而如果我们需要从别人的网站上爬取数据或者(以我目前重构html为例)从本地html文件读取数据来构建我们的数据源,就有点不知所措了,总不能一个个的在查看源代码中重复的进行辅助粘贴吧。细细思考一下,这时就需要用到有着强大的爬虫和数据分析能力的Python了。那么如何用Python爬取本地html文件的数据?

  1. 前提:

    你需要在电脑上安装python以及相关库,否则无法运行py文件,也就无法实现该需求了。

  2. 具体思路:

    百度了解python爬取html需要用到的库以及find()和findAll()方法,这里我们用BeautifulSoup库来进行爬取。

    下面代码将以我爬取的html文件为例:参考博客链接:Python学习,解析本地HTML文件

    截取部分html代码:

    <div class="col-xl-3 col-lg-4 col-md-6 col-sm-6 col-12 mb-5 show"><figure class="effect-ming tm-video-item"> <img src="img/csdn.jpg" alt="Image" class="img-fluid"><figcaption class="d-flex align-items-center justify-content-center"><h3>CSDN</h3> <a target="_blank" href="https://blog.csdn.net/" target="_blank">Viewmore</a></figcaption></figure><div class="d-flex justify-content-between tm-text-gray"> <span class="tm-text-gray-light">博客</span><span>专业IT技术发表平台</span></div>
    </div>
    <!---------- -------------->
    <div class="col-xl-3 col-lg-4 col-md-6 col-sm-6 col-12 mb-5 show"><figure class="effect-ming tm-video-item"> <img src="img/zhihu.jpg" alt="Image" class="img-fluid"><figcaption class="d-flex align-items-center justify-content-center"><h3>知乎</h3> <a target="_blank" href="https://www.zhihu.com/">View more</a></figcaption></figure><div class="d-flex justify-content-between tm-text-gray"> <span class="tm-text-gray-light">知乎</span><span>高质量的问答社区</span></div>
    </div>
    

    可以发现:上述代码html框架是一致的,不一样的只有对应位置的数据

    核心方法:find() 和 findAll() find(): 查找匹配目标一次 findAll(): 查找匹配所有目标

    举个栗子:爬取上面代码中第一个div中img的src值,即img/csdn.jpg 使用find();爬取所有img,使用findAll();

    img = soup.find('img').get('src')
    img
    //输出    'img/csdn.jpg'img = soup.findAll('img')
    //此时的img得到的是一个数组,不能直接获取src,需要用for循环将src遍历组成新的数组
    img
    //输出
    [<img alt="Image" class="img-fluid" src="img/csdn.jpg"/>,<img alt="Image" class="img-fluid" src="img/zhihu.jpg"/>]
    

    很显然,基于我们的data中的datalist是一个对象数组,其中还内嵌了一个list对象数组。

    分析得知:datalist等价于爬取整个class=“col-xl-3 col-lg-4 col-md-6 col-sm-6 col-12 mb-5 show”的div,

    list等价于每个class=“col-xl-3 col-lg-4 col-md-6 col-sm-6 col-12 mb-5 show”的div,

    所以最终的python爬虫代码如下:有条件的可以使用vscode中的Jupython来实时调试

    //引入爬虫库
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(open('index.html',encoding='utf-8'),features='html.parser')
    datalist = []
    for content in soup.findAll(class_ = "col-xl-3 col-lg-4 col-md-6 col-sm-6 col-12 mb-5 show"):img = content.find(class_ = 'img-fluid').get('src')header = content.find('h3').textmlink = content.find('a').get('href')detail = content.find('a').text.replace('\n','').replace(' ','')title =  content.find(class_ = 'tm-text-gray-light').textlink = mlinkfor i in content.find(class_ = 'd-flex justify-content-between tm-text-gray').findAll('span'):describe = i.textlist =[img,header,mlink,title,link,describe,detail]datalist.append(list)
    

    注意12行的代码所代表的含义:爬取第一个(本例中只有一个)class=“d-flex justify-content-between tm-text-gray”的div下的所有span标签的内容,然后进行遍历将最后一个span的值赋值给变量describe,结合上例就是 “高质量的问答社区”

    <div class="d-flex justify-content-between tm-text-gray"> <span class="tm-text-gray-light">知乎</span><span>高质量的问答社区</span></div>
    

    数据爬取之后的操作就是保存数据,毋庸置疑我们选择保存为excel

    python保存数据到excel中代码:

    import xlwt
    book = xlwt.Workbook(encoding='utf-8',style_compression=0)
    sheet = book.add_sheet('Sheet',cell_overwrite_ok=True)
    col = ('img','linkname','mlink','title','link','describe','detail')
    for i in range(0,7):sheet.write(0,i,col[i])
    for i in range(0,len(datalist)):data = datalist[i]for j in range(0,7):sheet.write(i+1,j,data[j])
    savepath = 'data.xlsx'
    book.save(savepath)
    

    代码没有做excel是否存在的判断,但整体没有影响,具体详情见python实现将数据写入Excel文件中

结语

功能实现

本质就是用vue写一个单页面应用,将原来纯用html写的冗余代码用vue去优化html页面,然后将数据源从html中分离到vue的data中,数据源直接写入到excel,数据的json格式通过转换工具实现,然后批量复制粘贴到data的datalist中,然后就有了一个属于自己的导航网址网站啦!

资源分享

前端代码需要整理才能分享,需要的可以在评论回复,有时间尽可能分享

Vue.js写一个本地网址导航网站相关推荐

  1. Vue.js 写一个echarts的水滴图

    首先在安装echarts依赖库的情况下,详情可以参考我的上一篇博客 第一步在命令行或者控制台引入liquidfill: npm install echarts-liquidfill 第二步:在项目的m ...

  2. vue结合php增删改查实例,用vue.js写一个简单的增删改查

    Title tbody:empty:after { content: '没有找到'; } 姓名年龄操作 {{item.stuName}}{{item.age}}修改 删除 添加 var app = n ...

  3. vue.js写一个DOTA2卡尔练习小游戏

    卡尔亡还是卡尔王? 一个纯前端小游戏,后续会加上后端代码来记录各位大佬的手速.如果喜欢欢迎star. 游戏主界面: 支持改键以及传统键位切换: github链接 https://github.com/ ...

  4. VUE写一个本地教室管理系统

    VUE写一个本地教室管理系统 实现效果 主体 模态框 Vue JS主体 Vue实现删除功能 splice语法 Vue实现添加功能 push()语法 Vue实现修改功能 源码 实现效果 点击添加按钮后, ...

  5. 【Part2】用JS写一个Blog (node + vue + mongoDB)

    [Part1]用JS写一个Blog (node + vue + mongoDB) 上一节前后端项目分别初始化完成,这一小节我就从后端项目开始写.实现mongoDB数据库的连接. 整理后端目录 下面是通 ...

  6. 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-1.工具和本地环境

    技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-1.工具和本地环境 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-1.工具和本地环境 技能学习 ...

  7. 二度导航-一个实用的网址导航网站,聚合多个超实用功能

    二度导航网是一个以网址导航为主的便民型网站,收录了各行各业优秀实用网站,更聚合了很多的实用功能,方便快捷! 实用功能一:在线音乐 在线听歌功能,无任何套路,经典老歌,热门排行榜,新歌榜等等:支持加入自 ...

  8. 导航网站哪个好,推荐一个好用的网址导航网站

    一个好用的导航网站会收录大量的优质站点,可以方便我们快速访问使用,提高我们的上网及工作效率.但是现在的主流导航网站广告都太多,收录的网站也不能满足大家实际需求.下面小编就和大家推荐一个好用的网址导航网 ...

  9. 一个适合职场办公上班族的网址导航网站,提高工作效率

    对于职场打工一族,上班上网经常要用到的是什么?那就是网站,我们可能是需要使用在线工具快速帮我们完成任务,比如文件格式的转换,图片的在线处理,某个信息的查询等,还可能需要查找下载一下软件,或者找一些可靠 ...

  10. 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-6.用户登录(二),token验证

    技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-6.用户登录(二),token验证 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-1.工具和本 ...

最新文章

  1. keras添加正则化全连接_收藏!改善TensorFlow模型的4种方法你需要了解的关键正则化技术(2)...
  2. Oracle修改表空间大小
  3. LeetCode算法入门- Multiply Strings -day18
  4. 还没使用过Web Worker,推荐一款开源工具Workerize,快速上手
  5. Aptana Studio 3 如何汉化,实现简体中文版
  6. Java反射获取Android系统属性值
  7. 在PDMS中使用python直接生成管口方位图(开源分享第二集)
  8. 软考-中级-网络工程师-知识点个人总结(一)
  9. AT24C256读取数据
  10. SP2-0734: unknown command beginning *** – rest of line ignored.
  11. 打开keil提示未安装xx器件包,实际上已经安装
  12. 逻辑推理:张老师的生日
  13. [CDQ分治与整体二分]个人对CDQ分治与整体二分的理解
  14. 2022-2028全球与中国品牌许可市场现状及未来发展趋势
  15. 这份赏金任务,人人都能做,只要……
  16. 令人感动的电影---虎兄虎弟
  17. VSC的基础使用(插件和设置)
  18. 量变到质变的一万小时
  19. 电大计算机基础应用操作题,2016年电大-电大 网考 计算机应用基础 操作题大全.doc...
  20. 机智云安卓初步配置遇见的问题与解决

热门文章

  1. csgo靠谱的开箱网站有哪些?csgo开箱网站大全
  2. 传感器技术-光电式传感器(学习笔记十)
  3. html5断点续传播放视频,HTML5 大文件断点续传完整思路整理
  4. SpringBoot的@Value注解设置默认值
  5. Maven报:Unable to import maven project: See logs for details
  6. JavaScript线条变形动画网页js特效
  7. Springboot开关柜综合监测信息查询系统毕业设计-附源码191550
  8. Flappy bird制作过程
  9. 在技术部门当头头最重要的是业务逻辑能力、协调能力和项目管理能力
  10. php怎么写炫彩字,Photoshop打造超酷的炫彩字