2020-4-9 1106 0
未分类

官网介绍由职业前端倾情打造,面向全层次的前后端开发者,低门槛开箱即用的前端UI解决方案下载地址:https://www.layui.com/下载文件介绍文件树├─css//css目录││─modules//模块css目录(一般如果模块相对较大,我们会单独提取,比如下面三个:)││├─laydate││├─layer││└─layim│└─layui.css//核心样式文件├─font//字体图标目录├─images//图片资源目录(目前只有layim和编辑器用到的GIF表情)│─lay//模块核心目录│└─modules//各模块组件│─layui.js//基础核心库└─layui.all.js//包含layui.js和所有模块的合并文件layUI的使用引入layUI的CSS和Js<head><metacharset="UTF-8"><title>Title</title><!--引入css--><linkrel="stylesheet"href="./layui/css/layui.css"><!--映入Js--><scriptsrc="./layui/layui.js"></script></head>两种模块化用法模块化用法(一般用于开发环境)<head><metacharset="UTF-8"><title>Title</title><!--引入css--><linkrel="stylesheet"href="./layui/css/layui.css"><!--模块化的用法导入的Js--><scriptsrc="./layui/layui.js"></script><!--模块化的用法--><script>layui.use(['layer',"form"],function(){//使用哪一个模块的功能就导入哪一个varlayer=layui.layer;layer.alert("大数据男孩")})</script></head>全模块用法(一般用于线上环境)<head><metacharset="UTF-8"><title>Title</title><!--引入css--><linkrel="stylesheet"href="./layui/css/layui.css"><!--全模块化的用法导入的Js--><scriptsrc="./layui/layui.all.js"></script><!--全模块化的用法--><script>//直接使用layer.alert("大数据男孩")</script></head>

2020-4-8 844 0
未分类

布局容器为页面的栅格布局提供一个包裹的容器,有两个容器类。container类会随着屏幕大小改变成相应的宽度,响应式推荐使用响应式布局容器固定宽度大屏(>=1200px)宽度为1170px中屏(>=992px)宽度为970px小屏(>=768px)宽度为750px超小屏(100%)<body><divclass="container"style="background:#2aabd2">大数据男孩</div></body>container-fluid类流式布局容器百分百宽度占据全部视口(viewport)的容器适用于单独的移动端<body><divclass="container-fluid"style="background:#2aabd2">大数据男孩</div></body>栅格系统Boostrap自动把页面划分为最多12格等宽的列,然后通过所占列数进行模块化布局。在不同的屏幕尺寸下小格的宽度是不同的,但一定是等分屏幕宽度。栅格系统选项参数栅格系统用于一系列的行(row)与列(column)的组合来创建页面布局。-超小屏幕(手机)<768px小屏设备(平板)>=768px中等屏幕(桌面显示器)>=992px宽屏设备(大桌面显示器)>=1200pxcontainer最大宽度自动(100%)750px970px1170px类前缀.col-xs.col-sm.col-md.col-lg<!--布局装在容器里--><divclass="container"><!--每一行--><divclass="row"><!--大屏下每一行占12份--><divclass="col-lg-12">大数据男孩</div></div><divclass="row"><!--大屏下每一行占3份--><!--中屏下每一行占6份--><divclass="col-lg-3col-md-6">大数据男孩</div><divclass="col-lg-3col-md-6">大数据男孩</div><divclass="col-lg-3col-md-6">大数据男孩</div><divclass="col-lg-3col-md-6">大数据男孩</div><divclass="col-lg-3col-md-6">大数据男孩</div><divclass="col-lg-3col-md-6">大数据男孩</div></div></div>列嵌套直接嵌套,会有边距<!--布局装在容器里--><divclass="container"><!--每一行--><divclass="row"><divclass="col-md-12"><!--嵌套--><divclass="col-md-6">大数据男孩</div><divclass="col-md-6">大数据男孩</div></div></div></div>套在一个row里<!--布局装在容器里--><divclass="container"><!--每一行--><divclass="row"><divclass="col-md-12"><!--加一个row--><divclass="row"><divclass="col-md-6">大数据男孩</div><divclass="col-md-6">大数据男孩</div></div></div></div></div>列偏移使用col-md-offset-*类可以将列向右偏移,这些类实际是通过使用*选择器为当前元素增加了左侧的边距(margin)。<!--布局装在容器里--><divclass="container"><divclass="row"><!--4+4+4=12格--><divclass="col-md-4">大数据男孩</div><!--中等屏幕向右偏移4格--><divclass="col-md-4col-md-offset-4">大数据男孩</div></div><divclass="row"><!--2+8+2=12格--><divclass="col-md-8col-md-offset-2">大数据男孩</div></div></div>列排序通过使用col-md-push-*和col-md-pull-*类就可以很容易改变column的顺序。col-md-push-*:左-->右col-md-pull-*:右-->左<!--布局装在容器里--><divclass="container"><divclass="row"><!--原本--><divclass="col-md-8">左侧</div><divclass="col-md-4">右侧</div></div><divclass="row"><divclass="col-md-8col-md-push-4">左侧</div><divclass="col-md-4col-md-pull-8">右侧</div></div></div>响应式工具为了方便在不同屏下,实现隐藏和显示元素类名超小屏小屏中屏大屏hidden-xs隐藏可见可见可见hidden-sm可见隐藏可见可见hidden-md可见可见隐藏可见hidden-lg可见可见可见隐藏与之相反的,是visible-xs、visible-sm、visible-md、visible-lg在相应屏下显示。<!--布局装在容器里--><divclass="container"><divclass="row"><divclass="col-md-4hidden-md">中屏隐藏</div><divclass="col-md-4">2</div><divclass="col-md-4">3</div></div></div>

2020-4-8 1121 0
未分类

案例效果涉及的重要知识当前标签的索引获取index()HTML代码<divclass="wrapper"><ulid="left"><li><ahref="#">女靴</a></li><li><ahref="#">雪地靴</a></li><li><ahref="#">冬裙</a></li><li><ahref="#">呢大衣</a></li><li><ahref="#">毛衣</a></li><li><ahref="#">棉服</a></li><li><ahref="#">女裤</a></li><li><ahref="#">羽绒服</a></li><li><ahref="#">牛仔裤</a></li></ul><ulid="center"><li><ahref="#"><imgsrc="img/女靴.jpg"/></a></li><li><ahref="#"><imgsrc="img/雪地靴.jpg"/></a></li><li><ahref="#"><imgsrc="img/冬裙.jpg"/></a></li><li><ahref="#"><imgsrc="img/呢大衣.jpg"/></a></li><li><ahref="#"><imgsrc="img/毛衣.jpg"/></a></li><li><ahref="#"><imgsrc="img/棉服.jpg"/></a></li><li><ahref="#"><imgsrc="img/女裤.jpg"></a></li><li><ahref="#"><imgsrc="img/羽绒服.jpg"/></a></li><li><ahref="#"><imgsrc="img/牛仔裤.jpg"/></a></li><li><ahref="#"><imgsrc="img/女包.jpg"/></a></li><li><ahref="#"><imgsrc="img/男包.jpg"/></a></li><li><ahref="#"><imgsrc="img/登山鞋.jpg"/></a></li><li><ahref="#"><imgsrc="img/皮带.jpg"/></a></li><li><ahref="#"><imgsrc="img/围巾.jpg"/></a></li><li><ahref="#"><imgsrc="img/皮衣.jpg"/></a></li><li><ahref="#"><imgsrc="img/男毛衣.jpg"/></a></li><li><ahref="#"><imgsrc="img/男棉服.jpg"/></a></li><li><ahref="#"><imgsrc="img/男靴.jpg"/></a></li></ul><ulid="right"><li><ahref="#">女包</a></li><li><ahref="#">男包</a></li><li><ahref="#">登山鞋</a></li><li><ahref="#">皮带</a></li><li><ahref="#">围巾</a></li><li><ahref="#">皮衣</a></li><li><ahref="#">男毛衣</a></li><li><ahref="#">男棉服</a></li><li><ahref="#">男靴</a></li></ul></div>CSS代码*{margin:0;padding:0;font-size:12px;}ul{list-style:none;}a{text-decoration:none;}.wrapper{width:298px;height:248px;margin:100pxauto0;border:1pxsolidpink;overflow:hidden;}#left,#center,#right{float:left;}#leftli,#rightli{background:url(../img/lili.jpg)repeat-x;}#leftlia,#rightlia{display:block;width:48px;height:27px;border-bottom:1pxsolidpink;line-height:27px;text-align:center;color:black;}#leftlia:hover,#rightlia:hover{color:#fff;background-image:url(../img/abg.gif);}#center{border-left:1pxsolidpink;border-right:1pxsolidpink;}img{width:200px;height:250px;}JS代码$(function(){//绑定左边的li标签鼠标属性$('#leftli').mouseover(function(){//获取当前li标签索引varindex=$(this).index();//展示相应索引图片$('#centerli').eq(index).show();//隐藏其他图片$('#centerli').eq(index).siblings('li').hide()//链式写法$('#centerli').eq(index).show().siblings('li').hide();});//绑定右边的li标签鼠标属性$('#rightli').mouseover(function(){//获取鼠标当前索引9是左边的图片是9开始的varindex=$(this).index()+9;//展示相应索引图片$('#centerli').eq(index).show();//隐藏其他索引图片$('#centerli').eq(index).siblings('li').hide()//链式写法$('#centerli').eq(index).show().siblings('li').hide();})})案例图片下载:淘宝服饰案例

2019-12-1 1388 0
未分类

效果CSS代码*{padding:0;margin:0;}ul{list-style-type:none;margin:100px;}.menu-head{width:185px;height:47px;line-height:47px;padding-left:38px;font-size:17px;color:#475052;cursor:pointer;border:1pxsolid#e1e1e1;position:relative;margin:0px;font-weight:bold;background:#f1f1f1centerrightno-repeat;}.menu-list.current{background:#f1f1f1centerrightno-repeat;}.menu-body{width:223px;height:auto;overflow:hidden;line-height:38px;border-left:1pxsolid#e1e1e1;backguound:#fff;border-right:1pxsolid#e1e1e1;display:none;}.menu-bodya{display:block;width:223px;height:38px;line-height:38px;padding-left:38px;color:#777;background:#fff;text-decoration:none;border-bottom:1pxsolid#e1e1e1;}HTML代码<body><ulclass="menu-list"><li><pclass="menu-head">目标管理</p><divclass="menu-body"><ahref="#">主题空间</a><ahref="#">项目任务</a><ahref="#">工作计划</a><ahref="#">日程事件</a><ahref="#">时间视图</a></div></li><li><pclass="menu-head">会议管理</p><divclass="menu-body"><ahref="#">主题空间</a><ahref="#">会议安排</a><ahref="#">待开会议</a><ahref="#">已开会议</a><ahref="#">会议资源</a></div></li><li><pclass="menu-head">知识社区</p><divclass="menu-body"><ahref="#">我的收藏</a><ahref="#">知识广场</a><ahref="#">文档中心</a><ahref="#">我的博客</a><ahref="#">文档库管理</a></div></li></ul></body>JS代码第一代$(function(){//鼠标经过$('.menu-head').mouseover(function(){//$(this)JQuery当前元素//查找当前元素的,同级元素$(this).siblings('.menu-body').show()})//鼠标离开$('.menu-head').mouseout(function(){//$(this)JQuery当前元素$(this).siblings('.menu-body').hide()})})JS代码第二代利用hover()函数,合并鼠标的经过与离开的事件hover([over,]out)参数:over:鼠标移到元素上要触发的函数out:鼠标移出元素要触发的函数//组合写法$('.menu-head').hover(//鼠标经过function(){$(this).siblings('.menu-body').slideDown()},//鼠标离开function(){$(this).siblings('.menu-body').slideUp()});JS代码第三代利用hover()函数,合并鼠标的经过与离开的事件hover([over,]out)只写一个参数,代表无论鼠标经过还是鼠标退出,都要执行这个函数//组合写法$('.menu-head').hover(//鼠标事件,切换滑动function(){$(this).siblings('.menu-body').slideToggle()})

未分类

数组遍历方法:forEach()原生JS方法原生的JSforEach()不能遍历伪数组vara=[11,12,13,14,15,16];//遍历数组,但不能遍历伪数组,一个回调函数a.forEach(function(value,index){console.log(value,index);});数组遍历方法:each()JQuery静态方法JQueryeach()静态方法,可以遍历数组,也可以遍历伪数组//伪数组就是一个对象varb={'a':1,'b':2,'c':3,'d':4,length:4};//使用JQuery的each静态方法遍历伪数组$.each(b,function(index,value){console.log(index,value);})数组遍历方法:map()原生JS方法与foeEach()函数一样,不能遍历伪数组map(function(值,索引,该数组){})vara=[11,12,13,14,15,16];a.map(function(value,index,array){console.log(value,index,array);});数组遍历方法:map()JQuery静态方法JQuerymap()静态方法,可以遍历数组,也可以遍历伪数组varb={1:1,2:2,3:3,4:4,length:4};res=$.map(b,function(value,index){returnvalue+index});console.log(res)map()函数的作用是:遍历数组,然后对数组的值进行操作,返回一个新的数组trim()作用:去除字符串前后的空格参数:需要去除的字符串返回值:去除后的字符串vara='aaa';console.log("---"+a+"---");varres=$.trim(a);console.log(res)isWindow()作用:判断传入的参数是否是Window是否是Window对象参数:需要判断的对象返回值:true/false//真数组vararr=[1,2,3,4,5,6];//伪数组vararrlike={0:1,1:3,2:5,3:6,4:7,length:5};//对象varobj={"name":"aaa","age":5};//函数varfn=function(){};//window对象varw=window;varres=$.isWindow(w);console.log(res);isArray()作用:判断传入的参数是否是真数组参数:需要判断的对象返回值:true/false//真数组vararr=[1,2,3,4,5,6];//伪数组vararrlike={0:1,1:3,2:5,3:6,4:7,length:5};//对象varobj={"name":"aaa","age":5};//函数varfn=function(){};//window对象varw=window;varres=$.isArray(w);console.log(res);isFunction()作用:判断传入的参数是否是函数参数:需要判断的对象返回值:true/falsevarres=$.isFunction($);console.log(res);//-->true说明JQuery本质上是一个函数

2019-12-1 975 0
未分类

jQuery基础选择器名称用法描述ID选择器$("#id")获取指定ID的元素类选择器$(".class")获取同一类的class的元素标签选择器$("div")获取同一类标签的所有元素全选选择器$("*")匹配所有元素并集选择器$("div,p,li")选取多个元素交集选择器$("li.current")交集元素jQuery层级选择器名称用法描述子代选择器$("ul>li");使用>查找下一级标签,不会获取孙子层元素后代选择器$("ulli");使用空格,代表获取ul下的所有li元素,包括孙子等jQuery筛选选择器语法用法描述:first$("li:first")选择第一个li标签:last$("li:last")选择最后一个li标签:eq(index)$("li:eq(0)")选择索引为0的li标签:odd$("li:odd")选择索引为奇数的li标签:even$("div,p,li")选择索引为偶数的li标签jQuery筛选方法selector代表选择器的意思语法用法描述parent()$("li").parent()查找父级元素children(selector)$("ul").children("li")相当于$("ul>li"),最近的一级find()$("ul").find("li")相当于后代选择器$("ulli")siblings(selector)$(".first").siblings("li")查找同级的li标签nextAll([expr])$("div").nextAll()查找当前元素之后的所有同级元素prevAll([expr])$("div").prevtAll([expr])查找当前元素之前的所有同级元素hasClass(class)$("divi").hasClass('pro')检查某个标签是否包含某个特定的class,有返回trueeq(index)$("div").eq(0)相当于$("div:eq(0)")标签过滤器小例子//查找div下的第一个li,设置为pink色$("divli:first").css("color","pink");//查找同级的所有标签$("span").siblings()//查找同级的所有标签$("span").siblings()

未分类

登录数据库Mysql为了安全,默认不允许远程用户root登录mysql-p[]-u[]-p[]mysql-hlocalhost-uroot-p参数作用-h主机地址:-p127.0.0.1:3306-u用户名:-uroot-p密码:-p密码查看数据库showdatabases;进入数据库use[数据库名];查看数据库的全部表第一种方法:首先要进入数据库:use[数据库名];然后查看表:showtables;第二种方法:直接查看showtablesfrom[数据库名];查看当前操作的数据库selectdatabase();mysql>selectdatabase();+------------+|database()|+------------+|news|+------------+1rowinset(0.00sec)创建数据库createdatabase[数据库名];删除数据库dropdatabaes[数据库名];退出Mysqlexitmysql>exitByeC:\Users\ASUS>打开数据库登录MySQL后,需要对数据库进行操作,例如查询、创建表等。需要先用use命令打开相应数据库,才能对该数据库进行后续操作。use[数据库名];mysql>usenews;Databasechangedmysql>创建数据库表打开相应数据库后,才能进行这项操作,最后一个字段不写逗号createtable[表名]([字段名1][类型1][类型2],[字段名2][类型1][类型2],....);createtablestudent(idint(4)primarykeyauto_increment,namechar(20)notnull,sexint(4)notnulldefault'0'#不写逗号);删除数据库表droptables[表名];droptablesstudent;查看MySQL的版本第一种方法:mysql>selectversion();+------------+|version()|+------------+|5.6.43-log|+------------+1rowinset(0.01sec)第二种方法:在CMD执行:mysql--version或者mysql-VC:\Users\ASUS>mysql--versionmysqlVer14.14Distrib5.6.43,forWin64(x86_64)

2019-11-21 943 1
未分类

0x00创建爬虫工程进入要创建爬虫的文件下,执行下面命令scrapystartprojectbigdataboy0x01创建爬虫项目进入爬虫工程目录,执行命令,创建第一个爬虫scrapygenspiderbigdataboy_spiderbigdataboy.cn0x02设置爬虫打开settings.py文件,取消下面代码的注释#开启pipelines功能#Configureitempipelines#Seehttps://docs.scrapy.org/en/latest/topics/item-pipeline.htmlITEM_PIPELINES={'bigdataboy.pipelines.BigdataboyPipeline':300,}#添加'User-Agent'#Crawlresponsiblybyidentifyingyourself(andyourwebsite)ontheuser-agentUSER_AGENT=''}0x03编写网页的解析打开bigdataboy_spider.py文件有一个defparse(self,response):函数:这个函数的response是Scrapy框架爬取网页的相应返回值,它是一个scrapy.http.response.html.HtmlResponse对象,所以可以使用xpath,css…提取数据#导入item模型frombigdataboy.itemsimportBigdataboyItemdefparse(self,response):#使用xpath解析网页articleUrl=response.xpath('//div[@class="item-desc"]/a/@href').extract()item=BigdataboyItem(url=articleUrl)#使用定义的item定义的传输参数进行传递yielditem#获取下一页的连接nextUrl=response.xpath('//*[@id="pagenavi"]/div/ol//*[@class="next"]/a/@href').get()#print(nextUrl)ifnextUrl:#传入连接,然后执行的函数yieldscrapy.Request(nextUrl)else:return0x04定义item模型打开items.py文件classBigdataboyItem(scrapy.Item):#definethefieldsforyouritemherelike:#name=scrapy.Field()url=scrapy.Field()#自定义的模型0x05导出数据打开pipeline.py文件fromscrapy.exportersimportJsonItemExporterclassBigdataboyPipeline(object):def__init__(self):self.openFile=open("url.json","wb")#需要使用二进制打开文件,因为在导出过程中是使用的[字节]方式#传入文件打开对象self.exporter=JsonItemExporter(self.openFile)#准备导出self.exporter.start_exporting()#爬虫开始执行调用这个函数defopen_spider(self,spider):print("爬虫开始执行")defprocess_item(self,item,spider):#导出数据self.exporter.export_item(item)returnitem#爬虫执行结束调用这个函数defclose_spider(self,spider):#完成导出self.exporter.finish_exporting()#关闭文件打开self.openFile.close()print("爬虫执行完成")0x06运行爬虫执行命令在Pycharm的Terminal里执行scrapycrawlbigdataboy_spider查看运行结果

未分类

项目背景我们可以通过爬虫来模拟登录来查询自己的成绩,这其中最重要的就是登录这个关卡,只要通过了,就可以方便的查询自己的成绩了。但是我们还是要在法律的允许条件下爬取数据,下列的代码已进行隐私处理,并不针对任何组织。爬虫分析通过抓包,发现登录需要提交学号、密码、验证码、VIEWSTATE通过分析发现其中的VIEWSTATE参数就在网页中,所以我们可以通过正则表达式匹配出来爬虫项目结构importreimportrequestsclassAPI(object):...classTool(object):...API类·通过抓包,知道了以下接口classAPI(object):#登录页GET_INDEX="http://XXXXXXXX:XXXX/"#获取验证码GET_YZM_URL='http://XXXXXXXX:XXXX/CheckCode.aspx'#登录POST_LOGIN='http://XXXXXXXX:XXXX/default2.aspx'Tool类classTool(object):session=requests.session()VIEWSTATE=""#获取VIEWSTATE参数@classmethoddefgetHtml(cls):response=cls.session.get(API.GET_INDEX).textcls.VIEWSTATE=re.search(r'__VIEWSTATE"value="(.*?)"/>',response).group(1)#下载验证码在当前路径@classmethoddefdownload_yzm(cls):yzm_image=cls.session.get(url=API.GET_YZM_URL)withopen("yzm.jpg",'wb')asfile:file.write(yzm_image.content)#登录方法@classmethoddeflogin(cls,account,pwd,yzm):data={"__VIEWSTATE":cls.VIEWSTATE,"TextBox1":account,"TextBox2":pwd,"TextBox3":yzm,"RadioButtonList1":"%D1%A7%C9%FA","Button1":"",}response=cls.session.post(url=API.POST_LOGIN,data=data)response.encoding=response.apparent_encodingresponse=response.texttry:message=re.search(r">alert\('(.*?)'\);</script>",response).group(1)except:#登录成功跳转到详情页xm=re.search(r'<spanid="xhxm">(.*?)同学</span>',response).group(1)print("欢迎"+xm+"登录成功")else:#打印出登录失败信息print(message)主函数defmain():t=Tool()#实例化类t.getHtml()#获取VIEWSTATEt.download_yzm()#下载验证码account=input("请输入你的学号:")pwd=input("请输入你的密码:")yzm=input("请输入验证码:")t.login(account,pwd,yzm)#运行登录方法