禁用MacOs压缩文件产生_MACOSX.DS_Store
禁用MacOs压缩文件产生_MACOSX.DS_Store
mac系统自带的压缩功能,会自动给压缩包里添加一些无用文件,每次解压后都会多出来一些__MACOSX .DS_Store文件夹。 强迫症表示非常难受啊,一行代码即可解决这个问题。 打开终端输入以下禁止.DS_store生成的代码: defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE 恢复.DS_store生成: defaults delete com.apple.desktopservices DSDontWriteNetworkStores .DS_Store究竟是什么? .DS_Store (Desktop Services Store),是Apple公司的操作系统创建的一个隐藏文件,里面保存着自定义目录的图标和背景图片等元信息,当我们从Mac OS中复制文件到移动磁盘,然后从Windows操作系统读取的时候,就可发现这些苹果系统下自动生成的隐藏文件。
 2022-6-7
Python爬虫
Python爬虫
安装requests和bs4 安装requests pip install requests 安装bs4 pip install bs4 爬取豆瓣电影数据 # 获取页面 import requests as req # 1.向服务器发送请求 url="https://movie.douban.com/top250" header={ "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36" } html = req.get(url,headers=header).content.decode("utf-8") # 2.保存文件到本地 with open("top250.html","w",encoding="utf-8") as f: f.write(html) print(html) 数据处理 from bs4 import BeautifulSoup soup = BeautifulSoup(open("top250.html",encoding="utf-8"),"html.parser") print(soup) print(soup.find_all("a",class_="")) 获取所有标题 # 这里获取的爬取之后保存到本地的文件 soup = BeautifulSoup(open("hkiii.html",encoding="utf-8"),"html.parser") text = soup.select(".loglist_title") # 获取标签内的文字 for t in text: print(t.text) 爬取结果
 2022-5-25
axios配置
axios配置
关于Axios Axios,是一个基于promise的网络请求库,作用于node.js和浏览器中,它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生node.js http模块, 而在客户端 (浏览端) 则使用XMLHttpRequest。 全局配置 <body> <button onclick="search()">查询</button> <button onclick="add()">添加</button> </body> <script> // axios的配置 1.全局配置 2.自定义配置 axios.defaults.baseURL='http://localhost:8080/user' // 设置超时时间 axios.defaults.timeout = 3000 function search() { var url= 'search'; axios.get(url).then().catch(err=>{ console.log(err.message) }) } function add() { var url= 'add'; axios.get(url).then().catch(err=>{ console.log(err.message) }) } </script> 自定义配置 <body> <button onclick="search()">查询</button> <button onclick="add()">添加</button> </body> <script> // axios的配置 1.全局配置 2.自定义配置 const ax = axios.create({ baseURL:'http://localhost:8080/user', timeout:'3000' }); function search() { var url= 'search'; ax.get(url).then().catch(err=>{ console.log(err.message) }) } function add() { var url= 'add'; ax.get(url).then().catch(err=>{ console.log(err.message) }) } </script>
 2022-5-24
Es6语法笔记(部分)
Es6语法笔记(部分)
Es6语法介绍 ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版。 ES6 主要是为了解决 ES5 的先天不足,比如 JavaScript 里并没有类的概念,但是目前浏览器的 JavaScript 是 ES5 版本,大多数高版本的浏览器也支持 ES6,不过只实现了 ES6 的部分特性和功能。 完整代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <style> .box-item{ width:100px; background-color: aquamarine; height: 50px; text-align: center; line-height: 50px; margin: 10px; } #ad{ width: 200px; height: 200px; background-color: bisque; } </style> <body> <div class="box-item">1</div> <div class="box-item">2</div> <div class="box-item">3</div> <div id="ad"></div> <script> //let小demo item = document.getElementsByClassName("box-item"); for (let i = 0; i < item.length; i++) { item[i].onclick=function(){ this.style="background-color:red"; this.innerText="我被点击了" } } // 数组的解构 const F4 = ['小沈阳','刘能','赵四','宋小宝']; let [xiao,liu,zhao,song]=F4; console.log(xiao); console.log(liu); console.log(zhao); console.log(song); // 对象的解构 const zhaobs = { name:'赵本山', age:'不详', xiaoping:function(){ console.log("我也可以演小品") } } let {name,age,xiaoping}=zhaobs; console.log(name); console.log(age); console.log(xiaoping); xiaoping(); // es6引入新的声明字符串的方式【``】 // 1.声明 let str = `我是字符串`; console.log(str,typeof str) // 2.内容中可以直接出现换行符 let strTwo = ` <ul> <li>box1</li> <li>box2</li> <li>box3</li> </ul>`; // 3.变量拼接 let lovest = '杨幂'; let out = `${lovest}是我最喜欢的演员`; console.log(out) // Es6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。 // 这样写更简洁 let namee = '大彭Sir'; let change=function(){ console.log('我贼能吃!!!') } const bi ={ namee,change} console.log(bi) // Es6允许使用箭头(=>)定义函数。 let fn = (a,b) => { return a+b; } let sum = fn(10,20) console.log(sum) // this是静态的.this始终指向函数声明时所在作用域下的this得值 function getName(){ console.log(this.name); } let getName2 = () =>{ console.log(this.name);//无法改变指向 } window.name = '彭Sir' const es = { name:'PengSir' } getName.call(es); getName2.call(es); // 不能作为构造函数实例化对象 // let person = (name,age) =>{ // this.name = name; // this.age = age; // } // let me = new person('xiao',30); // person is not a constructor // console.log(me); // 箭头函数的简写,当型参有且只有一个可以省略括号 let add = n =>{ console.log(n+n) } add(1) // 当代码体只有一条语句的时候可以省略花括号,return必须省略 // 语句执行结果就是函数的返回值 let pow = n =>n*n; console.log(pow(10)); // 箭头函数demo // 需求一:点击div 2s 后颜色变成 粉色 let ad = document.getElementById('ad'); ad.onclick = function(){ setTimeout(()=>{ this.style.background="pink" },2000) } // 需求二:从数组中返回偶数的元素 const arr = [1,6,9,10,100,25]; // 普通方法 // const result = arr.filter(function(item){ // if (item % 2 === 0) { // return true // } else{ // return false; // } // }); // 箭头函数 const result =arr.filter(item=>item%2===0) console.log(result) // 箭头函数适合与this无关的回调。定时器、数组方法的回调 // 箭头函数不适合与this有关的回调。时间回调,对象的方法 </script> </body> </html>
 2022-5-21
Vue 服务端渲染
Vue 服务端渲染
小案例 // 1.创建vue实例 const Vue = require('vue') const server = require('express')() // 2.读取模板 const renderer = require('vue-server-renderer').createRenderer({ template:require('fs').readFileSync('./template.html','utf-8') }) // 3.处理Get方式请求 server.get('*',(req,res)=>{ res.set({'Content-Type':'text/html;charset=utf-8'}) const vm = new Vue({ data:{ title:'当前位置', url:req.url }, template: '<div>{{title}}:{{url}}</div>' }) // 4.将Vue 实例渲染为Html后输出 renderer.renderToString(vm,(err, html) => { if (err){ res.status(500).end('err'+err) return } res.end(html) }) }) server.listen(8080,function () { console.log('server started at localhost:8080') }) 模板文件 <!DOCTYPE html> <html> <head> <title>Title</title> </head> <body> <!--vue-ssr-outlet--> </body> </html>
 2022-5-10
自动化测试
自动化测试
案例代码 import time from selenium import webdriver; from selenium.webdriver.common.action_chains import ActionChains # 获取谷歌驱动 drive = webdriver.Chrome(); # 2.打开百度 drive.get('http://www.baidu.com'); time.sleep(2) # 窗口放大 drive.maximize_window() # 3.找到百度的输入款 # bdEL = drive.find_element_by_id('kw') # time.sleep(3) action = ActionChains(drive); # 4.右键 执行方法 # action.context_click(bdEL).perform() # 5.双击事件 # bdEL.send_keys('tomcat8') # action.double_click(bdEL).perform() # 6.拖拽事件 # drive.get(r'C:\Users\Administrator\Desktop\软件测试\html\drop.html') # 获取到盒子div的元素对象 # div1 = drive.find_element_by_id('div1') # div2 = drive.find_element_by_id('div2') # action = ActionChains(drive); # 将div1拖拽到div2里面 # time.sleep(3) # action.drag_and_drop(div1,div2).perform() #鼠标悬停 gd = drive.find_element_by_id('s-usersetting-top') action.move_to_element(gd).perform() 弹窗 drive.find_element_by_id('alerta').click() time.sleep(2) # drive.switch_to_alert()过时 # 获取到alert对象 alert = drive.switch_to.alert # 点击弹框的确定 alert.accept() 执行js脚本 js2 = 'alert("哈哈")' time.sleep(2) # 执行js脚本 drive.execute_script(js) 在当前页面中找到其他页面 drive.get(r'C:\Users\Administrator\Desktop\素材\注册2实例.html') time.sleep(2) # 切换到a页面 drive.switch_to.frame('myframe1') drive.find_element_by_id('userA').send_keys("admin") # 切换到原来的页面 drive.switch_to.default_content() drive.find_element_by_id("user").send_keys("大彭Sir")
 2022-5-10
node根据不同路径跳转到指定的页面
node根据不同路径跳转到指定的页面
完整代码 //1.引入http的模块 var http= require('http'); var fs=require('fs');//读取页面内容 var path=require('path');//拼接 const { throws } = require('assert'); //2.创建服务器 var server= http.createServer(); //3.启动服务器 server.listen(3000,function () { console.log('server .... start.. success'); }); //4.监听客户发送过来的请求,并相应数据给客户端 request(请求对象) response(响应对象) server.on('request',function (request,response) { //获取的请求路径 var url= request.url; //响应乱码处理 //response.setHeader("cont") if(url==='/login'){ //读取文件 nodeDeme/static/login.html fs.readFile(path.join(__dirname,'static/login.html'),'utf8',function (err,data) { if(err){ throw err; } response.end(data); }); }else if(url==='/register'){ fs.readFile(path.join(__dirname,'static/register.html'),'utf8',function (err,data) { if(err){ throw err; } response.end(data); }); } else if(url==='/'){ fs.readFile(path.join(__dirname,'static/index.html'),'utf8',function (err,data) { if(err){ throw err; } response.end(data); }); } else if(url==='/add'){ fs.readFile(path.join(__dirname,'static/add.html'),'utf8',function (err,data) { if(err){ throw err; } response.end(data); }); }else { fs.readFile(path.join(__dirname,'static/404.html'),'utf8',function (err,data) { if(err){ throw err; } response.end(data); }); } }); 改进之后 //1.引入http模块 path模块(拼接路径) fs模块 文件读写 var http = require('http'); var fs = require('fs'); var path = require('path'); const { ifError } = require('assert'); //2.创建服务器 var serve = http.createServer(); //3.启动服务器 serve.listen(3000,function(){ console.log('server start success!') }); //4.监听客户端发来的请求 serve.on('request',function(request,response){ //获取请求路径 var url = request.url; //根据不同的请求,找对应的页面 var filepath; if(url==='/'){ filepath = path.join(__dirname,'public/index.html'); //读取页面内容 fs.readFile(filepath,'utf8',function(err,data){ if(err){ throw err; }else{ response.end(data); } }) }else{ if(url.indexOf('.')>=0){ filepath= path.join(__dirname,'public',url); }else{ filepath= path.join(__dirname,'public',url+'.html'); } //读取页面内容 fs.readFile(filepath,'utf8',function(err,data){ if(err){ throw err; }else{ response.end(data); } }) } })
 2022-5-7

Theme By Brief 鄂ICP备19010459号

站长统计 sitemap

首页

分类

友链

登录