大数据 爬虫Python AI SqlPython学习动态语言Ruby Python

Python爬虫不得不学之JavaScript 入门篇!

2019-02-15  本文已影响14人  1a076099f916
Python爬虫不得不学之JavaScript 入门篇!

现在的爬虫越来越难了,不再和之前的那样,随便抓个包就可以找到相关的 url ,然后 post 一下或者 get 一下数据就出来了。还有一个可能就是可能你以前用来学习的爬虫网站太简单了,还没有看见过那些猛的。上两周我就想弄弄知乎登陆,参数的加密算是把 js 代码扣出来了,但是只能在浏览器上运行,一换到 Python 执行就各种报错,你不会 JavaScript 就什么都调不了,所以二话不说,开启了新的大陆。那就开始吧!

这是小编精心准备的一份Python爬虫入门学习资料,进群:700341555即可免费领取!

Python爬虫不得不学之JavaScript 入门篇!

1. JavaScript 介绍

JavaScript 是运行在 客户端的语言,和你们说的 Java 是很不一样的, Java 通常用于服务器端的。但是他们两者也有相似之处,比如 JavaScript 的命名规范和名称和 Java 相似。其他的好像就没有什么了,哈哈。

JavaScript 也是一门脚本语言,和 python 一样,都是解释性语言,即每运行一行代码就解释一行,只不过 JavaScript 的解释器在浏览器内部。

JavaScript 最初被应用是为了处理与表单相关的验证,现在应用就更加广了,可以说是几乎无所不能,比如用来做服务端开发,命令行工具、桌面程序和游戏开发等。

我在学了之后也跟着弄了两个小的页面游戏,怀念童年。

Python爬虫不得不学之JavaScript 入门篇! Python爬虫不得不学之JavaScript 入门篇!

2.JavaScript组成

Python爬虫不得不学之JavaScript 入门篇!

3.JavaScript 变量

在了解变量之前,先要知道 JavaScript 代码写在那里:

  1. 行内,即写在 html 的元素中,不建议
  2. 嵌入,即写在 <script>标签内,这个练习时可以使用,但当代码量大的时候也不建议
  3. 外部,即 js 代码都在另一个文件内,用链接的方式接入 html 文件即可,推荐使用这种方式。

还有注释:

  1. 单行注释: // 注释内容
  2. 多行注释: / 注释内容 /

3.1 变量的定义以及作用

变量是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据。

使用变量我们可以更方便的获取或修改内存中的数据。

3.2 定义变量

使用 var 关键字来声明变量,和 python 差不多,都是弱类型的语言,只不过 python 不需要使用关键字来声明。

Python爬虫不得不学之JavaScript 入门篇!

注:console.log()这个方法只是在控制台打印一下变量而已。

3.3 变量的命名规则和规范

1):规则-必须遵守的,不遵守就会报错,就好比人类的法律

2):规范-建议遵守的,但不遵守也不会报错,比如人类的道德

3.4 小案例

了解完变量之后可以做个小案例:交换两个值

Python爬虫不得不学之JavaScript 入门篇!

4. 数据类型

JavaScript 的数据类型分两种,一个为简单数据类型,另一个为复杂数据类型。

简单数据类型有 Number、String、Boolean、undefined 和 null。一共五种

复杂数据类型比如 object,这个以后遇到再说,慢慢来。

4.1 Number

Number 为数值固定的表示法,用来表示整数和浮点数的。它的字面量就是数值,那字面量是什么意思呢?字面量就是这个变量表示的值,

Python爬虫不得不学之JavaScript 入门篇!

比如上面变量 a 的字面量就是 12,b 的字面量就是 45。

我们还可以使用 typeof 关键字来判断这个数据类型

Python爬虫不得不学之JavaScript 入门篇!

除了使用上面的十进制来赋值,我们还可以使用八进制和十六进制

Python爬虫不得不学之JavaScript 入门篇!

八进制的数是以 0 开头的,而十六进制的是以 0x 开头的,其他的进制就不讨论了。

无论你写何种进制,它的存储还是以二进制来存储的,所以这样就弄成了浮点数的存储精确度,浮点数只能精确到17位小数

Python爬虫不得不学之JavaScript 入门篇!

可以看到 两个浮点数的相加不是很准确,所以不要在有浮点数的运算下做判断,有可能会有你想不到的结果,如

Python爬虫不得不学之JavaScript 入门篇!

浮点数除了直接表示我们还可以使用科学计数法,当然,整数也是一样可以使用的。

Python爬虫不得不学之JavaScript 入门篇!

Number 数据类型是有范围的,但是不需要我们刻意去计,记住它的关键字就可以了。

Python爬虫不得不学之JavaScript 入门篇!

最后再说一个关键字:NaN:not a number,这个表示不是数值,当有两个数据运算时,运算失败就会返回这个值。我们也可以判断一个数据类型是不是 NaN,使用 isNaN() 方法即可。

Python爬虫不得不学之JavaScript 入门篇!

4.2 String

String 类型就是用单引号或双引号括起来的内容就是了,和 python 的字符串类型也是差不多的。

Python爬虫不得不学之JavaScript 入门篇!

length 属性是获取字符串的长度。

连接两个字符串可以使用** +** 进行连接, + 号两边不需要全是 String 类型也可以进行连接

Python爬虫不得不学之JavaScript 入门篇!

思考:如何打印出下列字符串

  1. 我是一个"帅哥"
  2. 我喜欢"学‘python’"

这里面有单引号和双引号,如果直接进行打印的话就会出错,这时候我们就需要把这些有意义的字符给转义符,转成普通的字符

Python爬虫不得不学之JavaScript 入门篇!

根据上面的转义符,就可以写出下面语句了

Python爬虫不得不学之JavaScript 入门篇!

4.3 Boolean

boolean 类型,字面量只有** true** 和 false,表示真假,即表示计算机的 1 和 0。

当我们描述只有两种结果的事物是可以使用这个。

4.4 undefined 和 null

  1. undefined 表示一个声明了没有赋值的变量,所以变量的默认值就是undefined。
  2. null 只是表示为空,如果要想把该值设为 null, 只能手动赋值。

5. 数据类型转换

5.1 其他类型转 String 类型

Python爬虫不得不学之JavaScript 入门篇!

需要注意:undefined 和 null 类型不能使用这个方法

Python爬虫不得不学之JavaScript 入门篇! Python爬虫不得不学之JavaScript 入门篇!

5.2 其他类型转 Number 类型

Python爬虫不得不学之JavaScript 入门篇! Python爬虫不得不学之JavaScript 入门篇! Python爬虫不得不学之JavaScript 入门篇! Python爬虫不得不学之JavaScript 入门篇!

5.3 其他类型转 Boolean 类型

这个使用** Boolean()** 来转就可以了,所有类型都可以转。转为 false 的情况为 null、undefined、NaN、0 和 空字符串,其他情况均为 true。

其实这个还可以使用隐式转换,就是不需要自己手动转,解释器会自动帮我们转,隐式转换通常用在判断语句的情况,隐式转换可以减少代码的书写,等说到判断语句再说,下面就有!

6. 操作符

操作符就是用来对数据类型进行操作的符号,每个语言的操作符都差不多,这里再说下可以更深刻一点!

6.1 算术运算符

+ - * / % 五个,任何一个数 除 0 都为为无穷大,模 0 为 NaN

Python爬虫不得不学之JavaScript 入门篇!

6.2 一元运算符

一元运算符就是只需要一个操作数的运算符,有 ++、-- 和 !

还有 -- 也是一样的,只是 它是自身减 1,在运算中需要注意变量在一元运算符的顺序。

Python爬虫不得不学之JavaScript 入门篇!

6.3 逻辑运算符

逻辑运算符有 && 、|| 和 !,! 因为只对一个操作数操作所以也属于一元运算符。

Python爬虫不得不学之JavaScript 入门篇!

6.4 关系运算符

关系运算符有** < > <= >= == != === 和 !==。运算完都是返回 Boolean 类型的,这里就不细说了,都差不多的,只说下 == 和 === 的区别,还有 !== 和 != 的区别。== 只判断两值的字面量相等不相等,不会判断数据类型,而 === 会先去判断数据类型再判断字面量,**!= 和 !== 的区别也是这样。

Python爬虫不得不学之JavaScript 入门篇!

6.5 赋值运算符

赋值运算符有 *+= -= = /= %= = 六个。

+= 就是把左右两边的值相加起来再赋值给左边的值,其他的也一样,就不多说了。

Python爬虫不得不学之JavaScript 入门篇!

6.6 运算符优先级从高到低(运算顺序)

  1. ()
  2. 一元运算符
  3. 算术运算符,同级时先 * / 再 + -
  4. 关系运算符:> >= < <=
  5. 相等运算符:== === != !==
  6. 逻辑运算符:同级时先 && 再 ||
  7. 赋值运算符

7. 流程结构

JavaScript 的流程结构有三种,分别是顺序结构,分支结构和循环结构,这个也和 python 差不多的。

顺序结构就是代码是按顺序从上到下执行的,分支结构就是按照给定条件的是否成立而执行不同的语句,循环结构就是重复执行某一段代码。

顺序结构就不多说了,我们刚才运行的代码就是顺序结构的,现在先说下分支结构。

7.1 分支结构

使用分支结构可以使用 if 和 else 组成的语句,写法和 python 差不多。

Python爬虫不得不学之JavaScript 入门篇!

单独 if 语句

说到判断,就有个隐式转换,就是 if 括号里面的值会将任意类型的值隐式转换成 Boolean 类型。如下:

Python爬虫不得不学之JavaScript 入门篇!

另一种形式的分支语句:

Python爬虫不得不学之JavaScript 入门篇!

if-else 一起用

这个 if-else 合用还有个简单点的写法,叫做三元运算符,语法为

Python爬虫不得不学之JavaScript 入门篇!

当表达式1 为 true 的时候,就会把 表达式2 的值给返回,否则返回 表达式3 的值,这个有一个缺陷,就是必须要有结果返回

Python爬虫不得不学之JavaScript 入门篇!

还有一种形式的分支语句:

Python爬虫不得不学之JavaScript 入门篇!

if-else if-if 三个合用

上面的 三个合用我们也可以使用 **switch **语句来改写,这个是选择关键词。语法为

Python爬虫不得不学之JavaScript 入门篇!

改写后:

Python爬虫不得不学之JavaScript 入门篇!

因为 case 的值只能是一个值,不能是范围,所以用了个除法来解决,要不然需要写大量的 case,还需要注意一点是一定需要记得写 break,否则在匹配到相应的值之后它会一直往下运行不管 case 值是否对应,直到遇到 break 或者 全部运行完

7.2 循环结构

JavaScript 的循环结构也有 while 和** for**语句,但他还有 do-while语句。

Python爬虫不得不学之JavaScript 入门篇!

这个先去执行初始化表达式1, 然后去执行判断表达式2,符合条件就会执行循环体,循环体执行完之后就执行自增表达式3,再去判断,接下来就是重复刚才的动作,直到不满足判断表达式2

Python爬虫不得不学之JavaScript 入门篇! Python爬虫不得不学之JavaScript 入门篇!

满足循环条件之后就执行循环体,然后再去执行循环条件,接下来就是重复刚才的动作直到不满足条件

Python爬虫不得不学之JavaScript 入门篇! Python爬虫不得不学之JavaScript 入门篇!

先去执行循环体,再去判断循环条件,接下来就是重复刚才的动作直到循环条件不满足

在循环结构中还可以使用 break 和 continue 来对循环进行跳出的操作。break 就是跳出整个循环,就是循环结束,而 continue 是跳出本次循环,接着下一次的循环

学习了循环之后,我们也可以尝试着自己打印一个三角形,或者 99 乘法表来满足一下自己。

Python爬虫不得不学之JavaScript 入门篇! Python爬虫不得不学之JavaScript 入门篇!

这两个的思路都是差不多的,只要你搞定了第一个三角形的思路,下面的乘法表自然就迎刃而解了,这里就不多说了

上一篇下一篇

猜你喜欢

热点阅读