一文解读JavaScript事件对象和表单对象

前言

相信做网站对JavaScript再熟悉不过了,它是一门脚本语言,不同于Python的是,它是一门浏览器脚本语言,而Python则是服务器脚本语言,我们不光要会Python,还要会JavaScript,因为它对做网页方面是有很大作用的。

1.事件对象(Event)

1).事件对象常量

bubbles         事件是否是起泡事件类型 
cancelable      事件是否可确定可取消的默认动作
currentTarget   事件监听器触发该事件的元素 
eventPhase      事件传播的当前阶段 
target          触发此事件的元素(事件的目标节点),srcElement(IE)
timeStamp       事件生成的日期和时间
type            当前Event对象表示的事件的名称 
initEvent()     初始化新创建的 Event 对象的属性
preventDefault() 不执行默认动作
stopPropagation()   停止冒泡 cancelBubble
x,y             元素的 x 坐标和 y 坐标
returnValue     设置或获取事件的返回值
fromElement  在IE中用于mouseover和mouseout 事件,可以引用移出鼠标的元素。
toElement  在IE中用于mouseover和mouseout 事件,该属性引用移入鼠标的元素。
returnValue 设置或获取事件的返回值
keyCode(IE) 键盘码 which()  charCode
offsetX,offsetY 事件在源元素的中的x坐标和y坐标。

这在后面的其它操作中我都有举例子,大家可以仔细看看。

2).键盘鼠标事件

altKey          判断"ALT" 是否被按下 
button          判断哪个鼠标按钮被点击 
clientX         判断鼠标指针的水平坐标
clientY         判断鼠标指针的垂直坐标
ctrlKey         判断"CTRL" 键是否被按下
keyIdentifier   按键的标识符  
keyLocation     按键在设备上的位置 
metaKey         判断"meta" 键是否被按下
relatedTarget   与事件的目标节点相关的节点
screenX         判断鼠标指针的水平坐标
screenY         判断鼠标指针的垂直坐标
shiftKey        判断"SHIFT" 键是否被按下

这个在后面也会提到,比如获取鼠标坐标:

2.表单对象

1).Form对象

document.forms['表单名']['text'].value #获取表单中的文本框的值
acceptCharset       服务器字符集 
action              设置或返回表单的action
enctype             设置或返回表单用来编码内容的MIME类型 
length              返回表单中的元素数目
method              设置或返回将数据发送到服务器的 HTTP 方法
name                设置或返回表单的名称
target              设置或返回表单提交结果的Frame或Window

2).Button对象(submit,hidden与它方法差不多)

b.accessKey                 设置或返回访问按钮的快捷键
b.alt                       设置或返回当浏览器无法显示按钮时供显示的替代文本 
b.disabled=true|false       设置或返回是否禁用按钮
b.form                      返回对包含该按钮的表单对象的引用
b.id                        设置或返回按钮的 id
b.name                      设置或返回按钮的名称 
b.tabIndex='3'              设置或返回按钮的 tab 键控制次序 
b.type                      返回按钮的表单元素类型 
b.value                     设置或返回在按钮上显示的文本

3).Checkbox 对象(Radio与它方法差不多)

和上面的对象差不多,唯一不同的便是多了一个默认值选中值:“defaultChecked”。

4).Select 对象

s.options  返回下拉列表数组
s.selectedIndex=num    设置或返回下拉列表中被选选项的索引号
s.multiple=true|false  设置或返回是否可有多个选项被选中
s.size                 设置或返回下拉列表中一次显示显示的选项数
s.add()       向下拉列表添加一个选项
s.remove()    从下拉列表中删除一个选项

总结

这篇文章主要介绍了JavaScript的事件对象和表单对象。下一篇文章,我们继续介绍JavaScript,敬请期待!

一文解读JavaScript中的事件知识

前言

相信做网站对JavaScript再熟悉不过了,它是一门脚本语言,不同于Python的是,它是一门浏览器脚本语言,而Python则是服务器脚本语言,我们不光要会Python,还要会JavaScript,因为它对做网页方面是有很大作用的。

1.事件

1).鼠标事件

onclick     #鼠标单击  
ondblclick  #双击鼠标
onmousedown #鼠标按钮被按下。
onmousemove #鼠标被移动。
onmouseover #鼠标移到某元素之上。
onmouseout  #鼠标从某元素移开。
onmouseup   #鼠标按键被松开。

2).键盘事件

onkeydown #按键被按下
onkeypress #按键被按下并松开
onkeyup #按键被松开

3)框架事件

onabort 图像的加载被中断 
onerror 在加载文档或图像时发生错误
onload  页面或图像完成加载  
onresize 窗口或框架被重新调整大小
onscroll 滚动事件
onunload 退出页面

可以看到一会儿就滚动了这么多下。

4).表单对象

onblur 元素失去焦点 
onchange 文本域的内容被改变
onfocus 元素获得焦点
onreset 重置按钮
onselect 文本选中
onsubmit 确认提交

总结

这篇文章主要结束了JavaScript的事件知识。下一篇文章,我们继续介绍JavaScript,敬请期待!

盘点 JavaScript 中那些进阶操作知识(下篇)

相信做网站对 JavaScript 再熟悉不过了,它是一门脚本语言,不同于 Python 的是,它是一门浏览器脚本语言,而 Python 则是服务器脚本语言,我们不光要会 Python,还要会 JavaScript,因为它对做网页方面是有很大作用的。

大家好,我是 IT 共享者,人称皮皮。上篇文章给大家分享了盘点 JavaScript 中那些进阶操作知识(上篇),这篇文章继续来看看趴!

前言

相信做网站对 JavaScript 再熟悉不过了,它是一门脚本语言,不同于 Python 的是,它是一门浏览器脚本语言,而 Python 则是服务器脚本语言,我们不光要会 Python,还要会 JavaScript,因为它对做网页方面是有很大作用的。

1.Javascript 刷新页面

history.go(0) 
location.reload() 
location=location 
location.assign(location) 
document.execCommand('Refresh') 
window.navigate(location) 
location.replace(location) 
document.URL=location.href

2.Js 浏览器兼容问题

1).浏览器事件监听

function addEventhandler(target,type,fn,cap){
            if(target.addEventListener)               /*添加监听事件*/
              {       
                target.addEventListener(type,fn,cap)
                }
            else{
                 target.attachEvent('on'+type,fn)  /*IE 添加监听事件*/
               }
          }
       function removeEventhandler(target,type,fn,cap){
            if(target.removeEventListener)            /*删除监听事件*/
             {
                target.removeEventListener(type,fn,cap)
                }
            else{
                 target.detachEvent('on'+type,fn)    /*IE 删除监听事件*/
               }
          }

2).鼠标键判断

function bu(event)
{
var bt= window.button || event.button;
if (bt==2)
  {
  x=event.clientX
  y=event.clientY   
  alert("您点击了鼠标右键!坐标为:"+x+','+y)
  }
else if(bt==0)
  {
    a=event.screenX
    b=event.screenY
  alert("您点击了鼠标左键!坐标为:"+a+','+b)
  }
else if(bt==1)
  {
  alert("您点击了鼠标中键!");
  }
}

3).判断是否按下某键

function k(event)
{
var ke=event.keyCode || event.which
if(event.shiftKey==1)
  {
  alert('您点击了 shift');
  }
 alert(ke)alert(event.type)
}

4).网页内容节点兼容性

1)).网页可视区域宽高

var w=document.body.offsetWidth|| document.documentElement.clientWidth|| document.body.clientWidth;
var h=document.body.offsetHeight|| document.documentElement.clientHeight || document.body.clientHeight;

2)).窗体宽度高度 比可视区域要大

window.innerHeight - 浏览器窗口的内高度(以像素计) 
window.innerWidth - 浏览器窗口的内宽度(以像素计)

3)).页面滚动条距离顶部的距离

var t=document.documentElement.scrollTop || document.body.scrollTop

4)).页面滚动条距离左边的距离

var s=document.documentElement.scrollLeft || document.body.scrollLeft

5)).元素到浏览器边缘的距离

  function off(o){   #元素内容距离浏览器边框的距离(含边框)var l=0,r=0;
        while(o){
            l+=o.offsetLeft+o.clientLeft;
            r+=o.offsetTop+o.clientTop;
            o=o.offsetParent;
        }
        return {left:l,top:r};
    }

6)).获取滚动条高度

// 滚动条的高度
function getScrollTop() {
var scrollTop = 0;
if (document.documentElement && document.documentElement.scrollTop) {
        scrollTop = document.documentElement.scrollTop;
    }
else if (document.body) {
        scrollTop = document.body.scrollTop;
    }
return scrollTop;
}

7)).DOM 节点操作

function next(o){//获取下一个兄弟节点 if (o.nextElementSibling) {
            return o.nextElementSibling;
        } else{
            return o.nextSibling;
        };
    }
    function pre(o){//获取上一个兄弟节点 if (o.previousElementSibling) {
            return o.previousElementSibling;
        } else{
            return o.previousSibling;
        };
    }
    function first(o){//获取第一个子节点 if (o.firstElementChild) {
            return o.firstElementChild;//非 IE678 支持
        } else{
            return o.firstChild;//IE678 支持
        };
    }
    function last(o){//获取最后一个子节点 if (o.lastElementChild) {
            return o.lastElementChild;//非 IE678 支持
        } else{
            return o.lastChild;//IE678 支持
        };
    }

8)).窗口的宽高

document.body.scrollWidth||document.docuemntElement.scrollWidth;//整个网页的宽
document.body.scrollHeight||document.docuemntElement.scrollHeight;//整个网页的高

9)).屏幕分辨率的宽高

window.screen.height;//屏幕分辨率的高
window.screen.width;//屏幕分辨率的宽

10)).坐标

window.screenLeft;//x 坐标
window.screenX;//X 坐标
window.screenTop;//y 坐标
window.screenY;//y 坐标

11)).屏幕可用工作区宽高

window.screen.availHeight 
window.screen.availWidth

5).事件源获取

e.target || e.srcElement

6).行外样式

funtion getStyle(obj,name){
   if(obj.currentStyle){
      //IE
    return obj.currentStyle[name];
    }else{
    //Chrom,FF
   return getComputedStyle(obj,false)[name];
      }
 }

7).阻止事件冒泡函数封装

function pre(event){

           var e = event || window.event;

           if(e.stopPropagation){   // 通用方式阻止冒泡行为

               e.stopPropagation();

           }else{    //IE 浏览器

               event.cancelBubble = true;

           }

8).阻止浏览器默认行为(例如点击右键出来菜单栏)

function stop(event) {

     var e = event || window.event;

     if (e.preventDefault){

         e.preventDefault();   // 标准浏览器

     }else{

         e.returnValue = false; // IE 浏览器

     }

}

3.严格模式

"use strict"

4.判断变量类型

typeof  variable
instance  instanceof  object
instance.constructor== object
Object.prototype.toString.call(instance)

5.下载服务器端文件

<a href="http://somehost/somefile.zip" download="myfile.zip">Download file</a>

总结

这篇文章主要介绍了 JavaScript 的进阶操作命令!希望对大家的学习有所帮助。


人生苦短,我用Python!

盘点JavaScript中那些进阶操作知识(上篇)

前言

相信做网站对JavaScript再熟悉不过了,它是一门脚本语言,不同于Python的是,它是一门浏览器脚本语言,而Python则是服务器脚本语言,我们不光要会Python,还要会JavaScript,因为它对做网页方面是有很大作用的。

1.进阶操作

这里列举了一些小编以前经常用到的一些例子以及一些经验,由于篇幅受限,这里我将会把部分执行结果的输出直接输入到代码下面。

1).浏览器输入

prompt('请输入') 返回一个字符串变量

2).浏览器输出

document.write('我被输出了') 返回一个字符串

3).浏览器弹框

alert('我是弹框')  返回一个字符串

4).浏览器交互

confirm("是否进入"); 返回一个比尔类型的值

5).控制台打印结果

console.log('显示在控制台的结果')

6).类型检查

typeof ss
ss instanceof string

7).转换为字符串

var ff=123
ff.toString()

8).转换为数字

parseInt(‘231fasd’) -->231  isNumeric 用来判断是否是数字
parseInt('df',num) --> num介于2~36之间,若省略则为10,若‘0x’开头,则为16,若小于2或大于36则为NAN
parseFloat('10') -->无法转换为数字将返回NaN,可通过isNan来判断是否为NaN

9).转换为原始对象

var ff=123
ff.ValueOf()

10).编解码函数

1))字符串编解码

escape(string)    # 编码
unescape(string)   #解码

2))URL编解码

encodeURI(URIstring)  #编码
decodeURI(URIstring)  #解码
encodeURIComponent(URIstring)   #把字符串编码为 URI 组件
decodeURIComponent(URIstring)   #解码一个编码的 URI 组件

11).Eval

可把里面的字符串当做Js代码来执行,犹如Python中的Eval。

eval("alert('fasd')")

12).Call

能够使用属于另一个对象的方法,可传多个参数,是经典的对象冒充方法。

function ss(a,b) {
    alert(a + this.val + b);
};
var o= new Object();
o.val = "123";
ss.call(o, "I am", "years old.");


output:
I am 123 years old

13).Apply

与Call差不多,前面是对象但是它后面的参数是一个数组。

function ss(a,b) {
    alert(a + this.val + b);
};
var o= new Object();
o.val = "123";
ss.apply(o, new Array("I am", "years old"));

14).Caller

返回一个对函数的引用,该函数调用了当前函数,caller 属性只有在函数执行时才有定义。

function aa() {
    if (aa.caller) {
       console.log(aa.caller);   
    } else {
        console.log("111");
     }
}
aa()
output: 111

15).Callee

返回正被执行的 Function 对象,表示对函数对象本身的引用,一般用在递归。

function ff(x){
    if(x==1)
{
        return 1;
}
    else{
        return x+arguments.callee(x-1)
}
}
ff(3);
output:6

总结

这篇文章主要介绍了JavaScript的进阶操作知识。下一篇文章,我们继续介绍JavaScript,敬请期待!

盘点儿童智力开发的首选编程语言——Scratch

大家好,我是IT共享者,人称皮皮。

前言

Scratch作为少儿编程的首选编程语言,这几年发展的如火如荼,当然,这主要还是因为它简单易学,不用掌握太多概念即可编程,这意味着你不用认识英文单词,编程照样行云流水,是不是很激动?那么现在让我们一起进入Scratch的世界吧。

一、安装Scratch

首先我们需要安装Scratch,下载地址:
https://u062.com/file/7715018-456560477,然后我们双击安装软件,它会自动安装,并且无法选择安装路径,所以系统盘最好保留足够的空间,安装完毕,打开如图所示:

当然如果你想切换到其它语言的界面也很简单,如图:

二、基本操作

我们从上图中可以看出Scratch的界面比较简洁,非常适合少儿编程,所以我们学起来也不会很困难。可以看到Scratch有这些早就编好的代码功能模块供我们使用,如图:

首先我们来看看猫咪的基本属性,如图:

这些参数我们都可以设置,我们还可以设置多个角色,比如大于吃小鱼,就可以找几个大鱼的图片和小鱼的图片。那么接下来让我们来看看Scratch有哪些妙用之处吧。

1.运动

这个板块具有让Scratch中的对象运动起来的功能,如下:

这里我们点击移动10步,角色就会向右移动10个像素,不过我们需要将这个模块拖动到中间这个窗口中来,如图:

这样点击中间的这个蓝色的不规则方块即可执行角色动作任务。比如我要角色左转,如图:

可以看到,我们拖动左转后可以设置左转的角度,然后点击之后角色就开始旋转一定角度,就好比移动了一样。然后我们还可以移动角色,这里可以选择移动到随机位置或者鼠标指针位置,这里我选择了随机位置,如图:

这里选择了随机位置的所有操作,可以看到我们的角色开始移动并且还可以在指定时间内移动到某个位置。这里还有一个边缘检测模块,如图:

当角色碰到边缘的时候,只要触发该模块的功能,角色即可反弹回来。勾选下面的三个选项即可显示当前角色的坐标和方向,如图:

2.外观

这个模块可以设置角色的形状和语言还有显示隐藏以及各种特效,如图:

我们可以看到这几个动作不像刚才那样连接起来了,我们将它镶嵌起来了,这样做的用途便是点击一处即可触发所有的功能,这里我们可以看到改变了角色的颜色和形状,甚至加了点特效,看起来怪怪的。我们也可以利用清除图形特效功能来清除上面的特效,也可以设置角色的状态,显示或者隐藏,并把角色移动到前面或者后面,显示角色的信息,如图:

3.声音

这个不用我多说,大家都知道,这个就是用来设置角色的声音的,如图:

系统内置的是猫咪的声音,我们可以自己录制猫咪的声音,如图:

4.事件

可以接收响应角色的各个事件,如图:

这个模块需要配合其它模块使用,比如前面的模块,我们让它在按下某个键后就发出猫咪声,如图:

这里小编设置了按下“a”键发出猫咪叫,按下”b”键角色马赛克特效增加25,小编刚按下“b”键就出现了马赛克效果,可见小编的做法是正确的。然后我们还可以看到这个事件可以接收到消息,并进行一些处理,比如说:

可以看到当我们收到这条消息后角色就进行思考,而且是不停的思考。

5.控制

控制就是可以重复执行角色的基本操作,或者使用一些控制循环语句,来看一下,如图:

这里我们克隆了这个角色,而且重复执行了十次说Hello并等待3秒的过程,但是控制里面有一些功能并不能单独使用,所以我们需要搭配其它功能模块来使用,下面我们接着来看其它模块。

6.侦测

这个模块通常是和控制和其它模块相辅相成的,它是控制模块中的某些判读语句的条件,如图:

7.运算

这里有这众多的计算方法,如加减乘除,下面来看看:

我们可以在里面输入任意数值来进行计算,不过随机数中只会显示随机整数。

8.变量

这个可以说是一门编程语言必备的东西了,Scratch也是,有了它,你可以做很多事情并实现它们。我们点击变量模块并点击建立一个变量,如图:

新建变量名然后选择变量的作用范围,如果适用于所有角色则是全局变量,可以在整个程序的任意位置使用,如果是仅适用于当前角色,说明只能作用在局部环境中。新建好变量后我们给变量设置一个值,如图:

这样即可使用变量了。

9.自制积木

这个模块我们在编写程序时完全可以不使用它,但是如果你的逻辑变得十分冗长的时候,你可以使用它来讲逻辑给包裹起来,也就是面向对象中的封装技术了。

三、总结

Scratch是儿童智力开发的首选编程语言,它把编程变得简单,而且可以提升孩子们 的想象力,如果可以做到亲子互动的话那么将更加有趣。

分享一次实用的爬虫经验

大家好,我是Python进阶者。

前言

前几天铂金群有个叫【艾米】的粉丝在问了一道关于Python网络爬虫的问题,如下图所示。

不得不说这个粉丝的提问很详细,也十分的用心,给他点赞,如果大家日后提问都可以这样的话,想必可以节约很多沟通时间成本。

其实他抓取的网站是爱企查,类似企查查那种。

一、思路

一开始我以为很简单,我照着他给的网站,然后一顿抓包操作,到头来竟然没有找到响应数据,不论是在ALL还是XHR里边都没有找到任何符合要求的数据,真是纳闷。讲到这里,【杯酒】大佬一开始也放大招,吓得我不敢说话。

其实是想复杂了,一会儿你就知道了。

怀着一颗学习的心,我看了杯酒的代码,发现他构造的URL中有下图这个:

然后我再去网页中去找这个URL,可是这个URL在原网页中根本就找不到???这就离谱了,总不能空穴来风吧,事出必有因!

二、分析

原来这里有个小技巧,有图有真相。

之后根据抓包情况,就可以看到数据了。

在里边可以看到数据:

这里【杯酒】大佬查询的关键词是:数据,所以得到了好几页数据,而我和【艾米】都是直接查的:上海手术器械厂,这个只有一页,不太好观察规律,所以一直卡住了。

之后将得到的代码中的URL的关键词,改为:上海手术器械厂,就可以顺利的得到数据,是不是很神奇呢?

三、代码

下面就奉上本次爬虫的代码,欢迎大家积极尝试。

# -*- coding: utf-8 -*-
import requests
import user_agent
from urllib import parse




def search(key_word):
    for page_num in range(1, 2):
        url = f'https://aiqicha.baidu.com/s/advanceFilterAjax?q={parse.quote(key_word)}&t=&p={str(page_num)}&s=10&o=0&f=%7B%7D'
        headers = {
            'User-Agent': user_agent.generate_user_agent(),
            'Referer': 'https://aiqicha.baidu.com/s?q=%E6%95%B0%E6%8D%AE&t=0',
        }
        print(url)
        response = requests.get(url=url, headers=headers)
        print(requests)
        print(response.json())
        # break




if __name__ == '__main__':
    search('上海手术器械厂')

只需要将关键词换成你自己想要搜索的就可以了。

下图是运行的结果:

下图是原网页的截图,可以看到数据可以对的上:

四、总结

我是Python进阶者。本文基于粉丝提问,针对一次有趣的爬虫经历,分享一个实用的爬虫经验给大家。下次再遇到类似这种首页无法抓取的网页,或者看不到包的网页,不妨试试看文中的“以退为进,投机取巧”方法,说不定有妙用噢!

最后感谢【艾米】提问,感谢【杯酒】大佬解惑,感谢小编精心整理,也感谢【磐奚鸟】积极尝试。

针对本文中的网页,除了文章这种“投机取巧”方法外,用selenium抓取也是可行的,速度慢一些,但是可以满足要求。小编相信肯定还有其他的方法的,也欢迎大家在评论区谏言。

手把手教你搭建集中式版本控制系统SVN服务器

大家好,我是IT共享者,人称皮皮。

一、前言

我们前段日子学过了分布式版本控制系统git,相信大家都领略到了它的强大,今天我们来说说集中式版本控制系统svn,跟分布式版本控制系统不同的是,集中式版本控制系统旨在用于多个人协同开发一个项目,而且它的版本控制系统都是存放在中央服务器上的,如果你需要使用就得从中央服务器上调用,它不像git,每个用户都可以有自己的版本控制系统而且互通。而且它采用的是c/s的运行机制,下面就让我们来使用svn吧。

二、搭建svn服务器

要想在集中式版本控制系统上访问资源,首先得搭建一个svn服务器,这里我们得下载一个可以创建svn服务的软件——VisualSVN server,下载地址:

https://u062.com/file/7715018-470258146

下载好后直接双击安装即可,如图:

手把手教你搭建集中式版本控制系统SVN服务器

手把手教你搭建集中式版本控制系统SVN服务器

这里我们需要设置端口号,紧接着点击next,如图:

手把手教你搭建集中式版本控制系统SVN服务器

然后一直next即可进行安装。成功安装后如图:

手把手教你搭建集中式版本控制系统SVN服务器

是不是有点iis服务器的即视感。安装好了之后我们先开启服务,如果你想开启vdfs服务,直接点击Enable,然后我们需要激活软件好获得45天的免费使用权,如图:

手把手教你搭建集中式版本控制系统SVN服务器

如果不想开启这个服务,这里选择否,然后我们会看到

手把手教你搭建集中式版本控制系统SVN服务器

点击第二项,输入安全钥匙,如图:

手把手教你搭建集中式版本控制系统SVN服务器

选择红色箭头所指处,然后按要求填写,如图:

手把手教你搭建集中式版本控制系统SVN服务器

然后把这个密钥填写进去即可,如图:

手把手教你搭建集中式版本控制系统SVN服务器

完成后可以看到它会提示你多久会到期,如图:

手把手教你搭建集中式版本控制系统SVN服务器

三、创建资源库

这里我们需要先创建一个资源库,如图:

手把手教你搭建集中式版本控制系统SVN服务器

手把手教你搭建集中式版本控制系统SVN服务器

然后我们选择第一个,因为第二个没有安装。然后设置代码仓库名字,如图:

手把手教你搭建集中式版本控制系统SVN服务器

设置好了之后,创建一个仓库目录,如图:

手把手教你搭建集中式版本控制系统SVN服务器

一般选择第一种就可以了,然后给使用这分配权限,如图:

手把手教你搭建集中式版本控制系统SVN服务器

这里,创建成功,如图:

手把手教你搭建集中式版本控制系统SVN服务器

此时访问该url是需要用户名和密码的,我们需要在server端设置用户名和密码,如图:

手把手教你搭建集中式版本控制系统SVN服务器

手把手教你搭建集中式版本控制系统SVN服务器

然后去浏览器中输入用户名和密码,如图:

手把手教你搭建集中式版本控制系统SVN服务器

登陆成功。我们可以看到visualsvn的目录下已经出现了一个hello的文件夹,如图:

手把手教你搭建集中式版本控制系统SVN服务器

于是乎,这里已经创建好了一个资源库。创建好资源仓库后我们需要添加子文件夹,可以通过服务端来完成,如图:

手把手教你搭建集中式版本控制系统SVN服务器

手把手教你搭建集中式版本控制系统SVN服务器

经过这一番操作,即可添加文件夹,不过需要注意的是,此时的hello这个仓库中能看到的子文件夹在本地磁盘中的仓库目录中并没有,也就是说我们是无法自行在这个文件夹下添加文件的,即使添加了,visualsvn也不承认这是属于它的一部分,所以这个时候需要我们使用集中版本控制系统的客户端来进行代码文件的上传了。

四、总结

本文主要带大家入门集中式版本控制系统,如果大家有做大型项目的话,使用这个相当方便管理。

盘点CSV文件在Excel中打开后乱码问题的两种处理方法

大家好,我是Python进阶者。前几天给大家分享了一些乱码问题的文章,阅读量还不错,感兴趣的小伙伴可以前往:盘点3种Python网络爬虫过程中的中文乱码的处理方法,UnicodeEncodeError: ‘gbk’ codec can’t encode character解决方法,今天基于粉丝提问,给大家介绍CSV文件在Excel中打开后乱码问题的两种处理方法,希望对大家的学习有所帮助。

前言

前几天有个叫【RSL】的粉丝在Python交流群里问了一道关于CSV文件在Excel中打开后乱码的问题,如下图所示。

在Excel中直接打开csv文件,如下图所示:

群中提问:

看上去确实头大,对于爬虫初学者来说,这个乱码摆在自己面前,犹如拦路虎一般难顶。不过别慌,小编在这里给大家整理了两种方法,专门用于针对CSV文件乱码的,希望大家在后面再次遇到这样乱码的问题,在此处可以得到灵感!

一、思路

其实解决问题的关键点就是在于一点,就是编码的转换。这里例举两种方法,肯定还有其他的方法的,也欢迎大家在评论区谏言。

二、解决方案

方法一:notepad++打开

因为csv文件本质上也是文本文件,本身用notepad++打开csv文件是可以直接打开,不会乱码的。如果在网络爬虫的时候,指定了存储格式为utf-8编码,那么该csv文件用notepad++打开是没啥问题的。

f = open('filename.csv', mode='a', encoding="utf-8")
csvwriter = csv.writer(f)

如下图所示:

因为我源文件本身就是韩语和日本语,所以看到的就是这个了,上图绝不是乱码哈,别误导了大家,嘻嘻!

方法二:Excel转换

这个方法稍微复杂一些,但是比较好理解,对于初学者来说,还是比较好接受的,直接在Excel中进行操作,步骤如下。

1)打开一个Excel文件,之后依次点击“数据”–>“从文本/CSV”,如下图所示。

2)之后选择需要加载的CSV文件,然后会自动弹出下图

从这里看的是原始文件,确实是乱码的存在,接下来需要稍微设置下就可以了。

3)文件原始格式设置为“无”或者你的原始编码“UTF-8”;分隔符默认是逗号;数据类型检测选择基于整个数据集,最后选择右下方的加载,如下图所示。

4)之后稍等片刻,CSV文件就会自动加载到Excel,如下图所示。

因为我源文件本身就是韩语和日本语,所以看到的就是这个了。

5)在Excel中的显示,如下图所示:

看上去还是比较清爽的,如此一来,中文乱码的问题就迎刃而解了。之后你就可以进行进一步的转存为标准的Excel文件或者进行数据处理都可以。

三、总结

我是Python进阶者。本文基于粉丝提问,针对CSV文件在Excel中打开后乱码问题,给出了两种乱码解决方法,顺利帮助粉丝解决了问题。虽然文中例举了两种方法,但是小编相信肯定还有其他的方法的,也欢迎大家在评论区谏言。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

服装打版界的扛把子——ET自定义操作

大家好,我是IT共享者,人称皮皮。

前言

今天要跟大家介绍的是关于服装设计所经常性使用的软件—–ET,这个ET可不是外星人,而是一款软件。这款软件在国内是最受欢迎的,其优点多多,这里不一一讲述,下面来看看它的具体操作过程,让小编带着大家一起做漂亮的服装版型,人人都可以成为服装设计师。

前面3篇文章已经给大家讲述了ET软件的基本操作,盘点服装设计所经常性使用的软件—–ET(上篇),盘点服装设计所经常性使用的软件—–ET(中篇),盘点服装设计所经常性使用的软件—–ET(下篇)

,这篇文章主要是给大家讲一下自定义的操作,这样自己可以实现更多的花样,一起来看看吧~

十、其它工具

1.端移动

这个工具的使用场景非常广泛,可以用来绘制任意图形,并且移动位置改变大小,首先我们需要绘制一个线段,然后选择端移动,并用鼠标左键选择线段,然后右键结束选择,如图:

此时就会变成一条绿色的线段,我们可以按住某一个端点并进行拖动,想拖多长的线段就拖多长的线段,如图:

最后的线段就是红色的那条,而且绿色的那条线段会消失。

2.平行线

顾名思义,就是能够生成多条平行的线段,我们可以先绘制一条线段,然后点击平行线,并右击鼠标然后左键拖动线段即可,如图:

3.等分线

我们可以使用等分线绘制一个雪花图案,如图:

我们首先绘制一条线段,然后选中等分线图标并且输入省量,然后使用左键拖动即可,如图:

4.测量两点的长度

这里我们需要使用两点测量这一功能,首先准备好两条线段,然后再点击两点测量,如图:

接着我们分别点击两条线段的端点,如图:

这时候它会弹出一个对话框,如图:

不管它,关闭即可。

5.旋转形状

有些时候我们需要将我们绘制的图形的方位进行旋转,这时我们可以借助旋转工具,如图:

选择旋转后,我们来框选需要旋转的部分,如图:

选中后右击鼠标,然后选择一个旋转的中心点,再用鼠标拖动旋转,如图:

6.半径圆、椭圆

1).半径圆

点击绘图菜单,选择半径圆,通过设置半径或者周长来绘制圆,如图:

如果我们不设置半径或者周长就可以自由绘制不同规格的圆。

2).椭圆

点击选用工具,选择椭圆,设置长直径和短直径,如图:

如果你不设置这两个参数的值,你就可以随意设置不同大小的椭圆。

7.省的操作

1).单向省

可以在曲线上添加一条直线,选择图标工具菜单,然后找到单向省,如图:

然后在曲线上单击某一点,即可添加一条直线,如图:

2).枣弧省

就是可以绘制一个菱形,打开图标工具菜单,选择打版图标工具,找到枣弧省,如图:

然后选中绘制枣弧省的点,然后设置参数,如图:

3).省道

省道可以在线段上开辟一个特殊的形状,如图:

打开省道后,我们只需要点击线段的中心点,然后往下拉,即可生成一个指定省长和省量的省道,如图:

这里小编设置了不同的省道和省量,所以效果不同。

4).省折线

我们可以通过省折线来将使用省道后所产生的缺口缝补好,我们先打开省折线,如图:

然后我们框选两个点,如图:

这样就可以了,是不是很漂亮了。

总结

ET可以说是服装打版软件中的佼佼者了,不仅功能丰富多样,而且操作方法简单易懂,学会了它你可以轻松做出服装版型,然后使用电脑排版打印,提高工作效率,目前百分之95都是电脑打版了,人工打版很少见了。

盘点服装设计所经常性使用的软件—–ET(下篇)

大家好,我是IT共享者,人称皮皮。

前言

今天要跟大家介绍的是关于服装设计所经常性使用的软件—–ET,这个ET可不是外星人,而是一款软件。这款软件在国内是最受欢迎的,其优点多多,这里不一一讲述,下面来看看它的具体操作过程,让小编带着大家一起做漂亮的服装版型,人人都可以成为服装设计师。

上两篇文章已经给大家讲了软件的安装和基本操作,盘点服装设计所经常性使用的软件—–ET(上篇),盘点服装设计所经常性使用的软件—–ET(中篇),这篇文章继续往下进行介绍,一起来看看吧~

八、线段调整

1.延长线段

我们可以在原先的线段基础上延长线段,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

设置偏移,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

可以看到,没有任何变化,只需要右击鼠标即可,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

2.连接线段

我们现在有两条线段,然后这两条线段没有连接,我们现在需要将两条线段进行连接,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

这里有种很方便的做法,直接先选择一条线段,左键框选,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

然后左键单击另一条线段,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

然后我们直接右键单击即可,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

3.修剪线段

如果我们不小心把线段弄长了,那么如何修剪了,很简单。首先我们画一个线段,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

这个时候我们只需要选择变长的两端,然后右键单击即可,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

注:框选的时候千万不要选到太多的不需要删除的部分,否则会把整个线段全部删除。

4.测量线段长度

这个也是非常简单,我们只需要使用智能笔右键单击线段即可显示它的线段长度,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

5.绘制指定长度和角度的线段

我们可以设置线段的指定长度并截取,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

修改这三个数值即可改变我们的线段的长度和宽度。那么角度如何实现了,这里需要用到角度线啦,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

找到角度线后,我们就可以选中线段的端点,然后进行拖动,即可绘制一条长度为30角度为90的线段了,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

九、画十字架

正常情况下我们可以直接画两条线段,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

可以看到,十字架画出来了,不过很容易画歪,接下来教大家一种方法,使用水平垂直补正即可解决这一问题,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

选择水平垂直补正,左键单击线段,此时线段为红色,然后右键单击后选择最后的端点,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

这样就实现了一个十字架了,如图:

盘点服装设计所经常性使用的软件-----ET(下篇)

总结

ET可以说是服装打版软件中的佼佼者了,不仅功能丰富多样,而且操作方法简单易懂,学会了它你可以轻松做出服装版型,然后使用电脑排版打印,提高工作效率,目前百分之95都是电脑打版了,人工打版很少见了。