自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 Python3 基础爬虫

1. requests在Python3中,可以使用urllib.request和requests进行网页爬取。urllib库是python内置的,无需安装requests库是第三方库,需自行安装1.1 安装命令pip install requests1.2 requests的基础方法方法说明requests.request()构造一个请求,支撑以下方法的基础方法requests.get()获取HTML网页,对应HTTP的GETrequests.head

2021-08-21 11:59:46 1090

原创 Python 爬虫的合法性 - robots.txt

1. 爬虫的合法性 - robots.txt网站都有一个名为 robots.txt 的文档,当然也有部分网站没有设定 robots.txt。robot.txt是网站写给爬虫看的,里面写了不希望爬虫做的事,如不要访问某些文件夹或文件,或限制爬虫访问网站的频率对于没有设定 robots.txt 的网站可以通过网络爬虫获取没有口令加密的数据,也就是该网站所有页面数据都可以爬取。如果网站有 robots.txt 文档,就要判断这个网站有哪些数据是不能去爬取的1.1 查看robot.txt根域名/robo

2021-08-21 00:47:36 1437 1

原创 Python SMTP邮件发送详解

一、前言SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP支持有smtplib和email两个模块email构造邮件smtplib发送邮件二、模块安装1. smtplibsmtplib不能直接使用pip install smtplib通常发送邮件用PyEmail,所以直接pip install PyEmail就行 PyEmail (0.0.1) - Python library

2021-08-02 00:46:32 1885 1

原创 kali sn0int的安装

安装 debian-keyringapt install debian-keyring从密钥服务器下载密钥到可信任的密钥列表sudo su - 切换到root模式gpg -a --export --keyring /usr/share/keyrings/debian-maintainers.gpg git@rxv.cc | apt-key add - apt-key adv --keyserver keyserver.ubuntu.com --refresh-keys git@rxv..

2021-06-27 00:22:51 2452 5

原创 kali 官方下载的VMware版本的账号密码

账号密码都是 kali

2021-06-15 23:48:41 2582 4

原创 黑苹果禁用SIP

SIP(System Integrity Protection)系统完整性保护:这是 OS X El Capitan 及更高版本所采用的一项安全技术,旨在帮助防止潜在恶意软件修改 Mac 上受保护的文件和文件夹。但这也造成了安装某些特殊版本软件的或者做特殊修改的时候权限不足禁用SIP重启,按住Command+R进入恢复模式,在工具端打开终端,运行命令csrutil disable注:Command+R 为白苹果使用的方式,黑苹果可以通过引导选择Recover引导进入(没有的话可以制作一个黑苹果启

2021-06-15 23:45:44 6305

原创 黑苹果通过修改Clover禁用SIP

在恢复模式的实用工具中,会出现csrutil disable执行失败的情况,这时可以通过修改CLOVER中的config.plist文件实现禁用SIP<key>RtVariables</key><dict> <key>CsrActiveConfig</key> <string>0x77</string></dict>将CsrActiveConfig属性值修改为0x77【每个文件的值最初可能不一样,修

2021-06-15 23:24:50 2171 4

转载 package.json browserslist

作用:根据提供的目标浏览器的环境来,智能添加css前缀,js的polyfill垫片,来兼容旧版本浏览器。避免不必要的兼容代码,以提高代码的编译质量。共享使用browserslist的组件们:组件名功能Autoprefixerpostcss添加css前缀组件bable-preset-env编译预设环境 智能添加polyfill垫片代码postcss-normalize基础语法: 只要package.json配置了browserslist对象,需要的组件将自动匹配

2021-02-22 01:31:44 4774

转载 Vue之package.json内容详解

创建项目时会自动生成package.json文件可以通过修改package.json文件内的内容,再通过npm install进行更新【直接转到项目目录下用命令npm install 或npm install --save-dev安装即可,自动将package.json中的模块安装到node-modules文件夹下】package.json中不能添加中文注释,否则会出现编译错误每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名.

2021-02-22 01:21:17 20632

原创 Vue-cli项目的创建

1.概述vue-cli是一个vue开发项目的脚手架2.安装npm install -g @vue/cli 【-g全局安装】觉得npm安装很慢的可以先安装一个cnpm,后续都使用cnpm进行安装npm install cnpm -D2.1npm参数1.npm init [-y]用来初始化项目,并生成一个package.json文件,该文件用来记录项目的一些基本配置信息,比如项目版本,项目依赖,等等。该命令有一个可选参数-y,其含义是在项目初始化时,采用系统默认的基本配置信息。如果没有此参数

2021-02-22 00:17:13 161

原创 WinPcap安装提示A newer version of WinPcap is already installed on this machine解决办法

找到相应文件,并把扩展名修改即可:C:\Windows\SysWOW64 的wpcap.dll改成 wpcap.dll.oldC:\Windows\SysWOW64的packet.dll改成 packet.dll.old

2020-09-23 17:58:34 34021 40

原创 MacOS 10.15 Catalina安装提示程序副本损坏

首先,务必断开网络实用工具 - 终端,输入以下代码【损坏一般是证书过期,将时间改到对应安装版本的证书发布之前即可】date 101112132019按回车确认10是月,11是日,12是时,13是分,2019是年,可以在年后面加.16为秒退出终端...

2020-09-23 02:48:22 2348

转载 Sublime 中文显示异常

选择Perferences(首选项)–> settings(设置)在右边文档中加入以下语句:"font_options": ["gdi"]

2020-07-21 01:02:09 211

原创 JavaScript 基础数据类型的点操作原理与包装对象

基础类型的点操作原理var a = "hello";console.log( a.charAt(1) );//econsole.dir( a ); //hello, a只是一个基础数据类型//undefined null除外的基础类型在执行 . 操作的时候,真正操作的不是这个基础数据类型,而是它所对应的包装对象//a.charAt(1) ===> new String(a).charAt(1)//undefined null类型的无论如何都不能点操作基础数据类型不能存值,复杂数据类

2020-07-07 01:27:06 163

原创 JavaScript 定时器详解

1. setTimeout: 用来指定某个函数或字符串在指定的毫秒数之后执行 只执行一次clearTimeout() 清除定时器三种用法://1. setTimeout(函数,延迟时间-ms为单位)setTimeout(function(){ alert("延迟弹窗");}, 1000);//2. setTimeout(函数名,延迟时间-ms为单位)var a = function(){ alert("延迟弹窗");}setTimeout(a,1000);//3. set

2020-07-06 18:34:14 348

原创 JavaScript filter数组过滤

filtervar arr = [1,5,2,4,80,55,63,24,78];//参数与forEach一样var newArr = arr.filter(function(item,index,arr){ console.log( item ); //当前遍历的元素 1 console.log( index ); //当前遍历的位置 0 console.log( arr ); //当前遍历的对象 arr});var newArr = arr.filt

2020-07-06 18:33:05 518

原创 JavaScript map遍历

Map 参数var arr = [10,20,40,90,20];//与forEach的参数一样arr.map(function(item,index,arr){ console.log( item ); //遍历的元素 10 console.log( index ); //遍历的次数 0 console.log( arr ); //遍历的数组本身 arr});Map 遍历数组,并产生一个新数组var arr = [10,20,40,90,20]

2020-07-06 18:32:17 1151

原创 JavaScript 数组相关方法

在数组前面或后面增删数据var a = ["张三","李四","王五"];//数组的 长度和下标 的值允许 读和写//length console.log(a.length);//3//下标取值console.log(a[0]);//张三//push 在数组的后面添加一条新的数据,改变原数组,返回数组的新长度a.push("李六");//可以push任何数据类型的console.log(a);//(4) ["张三", "李四", "王五", "李六"]//unshift 在数组的前

2020-07-06 18:30:54 207

原创 JavaScript return的作用域

fn()();//执行fn()得到函数c,再c()执行第二个alert var a = 0;function fn(){ alert(a); var a = 3; function c(){ alert(a); } return c;}/*1. 定义 var a; funtion fn(){...}2. 执行 fn() ===> 局部作用域 1. 定义 var a;

2020-07-05 00:43:24 957

原创 JavaScript 闭包

垃圾回收机制全局变量只有标签页关闭才会回收局部变量用完就回收标准浏览器使用的是标记回收,旧的IE使用的是引用回收,如果两个变量相互引用,这两个变量就一直不会被回收闭包 var a = 10; document.onclick = function(){ console.log( ++a ); }/*a是全局变量,所以函数里的a可以一直加*///闭包(function(){ var a = 10; document.onclick = function(){

2020-07-04 23:16:25 129

原创 JavaScript this指向与改变this指向

this指向/*函数在 定义/声明 的时候是不知道this指向的只有在执行的时候才有this这个概念*/function fn(){ console.log(this);}fn();//函数自执行的情况下this指向windowdocument.onclick = fn; //事件触发时指向事件的主体,this指向document对象var obj = { fn : function(){ console.log(this); }}obj.fn();//此时由对象o

2020-07-04 22:22:14 132

原创 javascript 解析顺序

ES5 解析顺序ES6没有这样的解析顺序定义阶段​ 先找到当前作用域(不会找子作用域)的 var 和 function 关键词​ var 先把变量定义出来,但是不会赋值(赋值属于执行阶段)​ function 先把函数定义出来执行阶段​ 从上到下执行例一* 1. 定义* var a;* functon b(){}* 2. 执行* b();* a = 10;*/b();var a = 10;function b(){ alert(1);}//v

2020-07-03 01:17:24 154

原创 javascript 作用域与作用域链

var a = 10;function fn(){ var b = 20; console.log(a); //10 console.log(b); //20}var a = 10;function fn(){ var a = 30; var b = 20; console.log(a); //30 console.log(b); //20}//局部变量里有a则用自己的,没有则往外找//如果到全局都没有找到a则报错var a = 1

2020-07-03 01:16:53 86

原创 javascript 函数

声明函数方式函数定义(允许在前面调用,因为浏览器会优先解析定义函数的代码)a();//可以执行,js会优先解析函数afunction a(){ alert(this);//window}//相当于window.a()//报错 函数定义不可以直接定义后面加括号自执行function f(){ console.log(i);}()//定义在script最外层的变量,叫全局变量//定义在函数里的变量,叫局部变量函数表达式(不允许在前面调用)a(); //

2020-07-03 01:16:20 119

原创 javascript 隐式类型装换

1.var a = "5";var b = 2;console.log( a + b ); //"52"2.console.log( true + 1 ); //2 true转成数字1console.log( true + “1” ); //"true1"3.// + 两边都有数据的时候,任意一边是字符串,那么+号的意义为拼接console.log( “1” + 2 + 3 + “4” ); //"1234"// "12" + 3 +"4"4.co

2020-07-03 01:14:30 96

原创 javascript 进制数的了解

var a = 10; //十进制var b = 0b10; //二进制var c = 0o10; //八进制var d = 0x10; //十六进制console.log(a); //10console.log(b); //2console.log(c); //8console.log(d); //16

2020-07-03 01:13:21 130

原创 javascript 获取元素的最终显示样式

//当页面加载完成之后,触发onloadwindow.onload = function(){ var oWrap = document.getElementById("wrap");}//.style的方式,只能设置或者获取行内样式的值getComputedStyle//获取某个元素节点的显示样式对象var s = getComputedStyle (oWrap);console.log(s.width);console.log(s.backgroundColor);//得

2020-07-03 01:12:50 364

原创 javascript 样式操作以及代替方案

<div id="wrap"> </div>var oWrap = document.getElementById("wrap");使用js改变css样式表外部样式表=> 不可以操作内部样式表行内样式var oCss = document.getElementById("css");//可以操作,但是要先手动去找出选择器的优先级,操作很麻烦,所以很少用这样的方式oCss.innerText = "#wrap{width:50px;height

2020-07-03 01:12:18 233

原创 javascript 操作标签的属性

<a href="http://www.baidu.com" id="wrap" class="afei" afei="13">a标签</a>var oWrap = document.getElementById("wrap");//操作元素的标签属性//获取oWrap.href//修改oWrap.href = "http://xxx.com";oWrap.className = ""; //不能用class 用 className代替//style是一个样式的

2020-07-03 01:11:16 149

原创 javascript this的简单认识

//事件函数的this指向 触发事件的那个节点对象var oWrap = document.getElementById("wrap");oWrap .onclick = function(){//this指向oWrap this.innerHTML = "123";}//自执行函数,this指向 windowfunction fn(){ console.log(this); //window}fn();var obj = { fn : function(){

2020-07-03 01:10:40 60

原创 JavaScript parseInt和获取元素的方式

var a = "123";bar b = Number(a);console.log(b); //123console.log(typeof b); //numbervar a = "张三";bar b = Number(a);console.log(b); //NaN not a numberconsole.log(typeof b); //numbervar a = "123张三456";var b = parseInt(a); //parseInt从第一位非空的数字开始

2020-07-03 01:10:11 165

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除