本文最后更新于:2020年6月18日 上午
前言
什么是爬虫?
实质是一种计算机程序,通过计算机语言开发而来,它的行为看起来就像一只蜘蛛在网上面爬行工作一样,蜘蛛的英文单词:Spider-爬虫的别名
百度蜘蛛,Google蜘蛛实质就是一个或一套爬虫程序。爬虫就是进行数据爬取,并可以进行简单的数据处理(数据清洗)操作的特殊应用程序爬去的来源一般是通过互联网展开而来
爬虫可以做什么?
1:收集数据 最直接,最常用的使用方法
2:尽职调查
是否在尽职的工作,很多时间,我们讲的话,写的内容,或多或少都会有一定水分,
数据是不会说谎的,可以通过爬虫来对发生的数据进行获取,并最终形成结果,
以验证过程是否如数据所言。
3.刷流量和秒杀
4.···
爬虫的开发技术?
爬虫的开发一般两个层面
1:“技”:通过各种语言和框架的使用来完成这个功能,这个层面更像是软件文档,目前市面上大多停留在只教你通过技术实现爬虫。
2:“术”:就是方法,比如遇到反爬虫问题,遇到一些特殊情况时,技只是支撑实现功能的基础,术就是提供这些问题的解决思路,所以术更强调思想,流程调度。
目前实现爬虫语言很多:java,php,c#,python·····都能实现爬虫为什么多数用py实现?原因:语法相对简单,相对其它语言够直接;入门容易,有强大库支持
两个重要库:requests,scrapy
整数浮点数及变量定义
1.python的数据结构和控制结构
内置函数
print()://用于输出结果或者信息,多用在向控制台输出内容。
Input()://用于接收用户输入内容
2.整数和浮点数
Python中的整数和数学中定义的整数是一样的,
Python中的浮点数和数字中定义的小数一样。
在python中,我们可以通过Print打印一个整数或者浮点数
如:
Print(1234) print(1.234)
整数的加减乘除运算可以在print中直接进行,同时还支持通过括号的方式来改变运算的优先级
如:
Print(1-10)
print(3+2-50)
print(3+2-5)0)
在python中做除法运算,会得到浮点结果
如:Print(5/5)
结果是:1.0
在浮点运算中,如0.3+0.1结果不是0.4。而是很长的一段浮点值,这不是py的问题
这是由于浮点数的存储机制导致的。
注意:不应该直接用python进行精确计算,但是进行日常精度不高的四则运算是没有问题的
B:变量
变量是可以变的,可以理解为一个存放其它数据的盒子,使用变量可以减少重复的输入
如:
Len = 10
width = 5
height = 2
d = Lenwidth
t = dheight
print(d)
print(t)
一个合法的变量为等号,左边为变量名,右边为变量值,其中等号是赋值的意思
如:
Name=”1234”
意思就是变量名为:Name值为”zhiliaotang”
补充:CMD直接运行Pyhton脚本方法
如脚本名为abc.py
CMD -> python abc.py
字符串,列表,元组的定义
1.字符串、列表、元组的定义
1、字符串
在python中字符串时一种比较常见的数据类型。
任何被单引号或双引号括起来的内容,都可以被认为是字符串,
字符串也可以赋值给变量。
如:
String_1=’aadccadw’#字符串可以接受中文英文或其它语言的字符内容
String_2=’’#空字符串
String_3=’ ‘#空格字符串
String_4=’a’#只有一个字母
String_5=’123’
String_6=””#采用双引号的字符串定义
以上字符串都是对的
从上面的代码中可以看见,字符串内容可以是中文,英文,数字,空格以及其它字符组成
字符串形式的数字和普通的数字是不一样的,如:int=123 String=”123”
以上两个结果是不一样的。
2、列表(list)
数据类型的表现形式为:list=[]
列表在python中是一种容器类型,由方括号括起来的数据组成。
里面的数据可以是整数、浮点数、字符串、也可以是另一个列表或者其他的数据结构。
列表中的每一项叫做列表的一个元素,每个元素之间使用英文逗号隔开。
如:
List_1=[1,2,3,4,5,6]#列表中有6个元素,全部都是数字
List_2=[‘abc’,’x’,’kkk’]
List_3=[]#空列表
List_4=[]123,’123’,3.14,[123,123,123]#由多种元素组合成的复合列表
以上定义都是对的
3、元组(tuple)
数据类型的表现形式为:tuple=()
元组也是pyhton中的一种容器类型,由小括号和小括号括起来的数据构成,外形和列表比较相似,
只不过列表使用的为方括号,元组为小括号。“元组”中的元和“二元一次方程”中的元是一个意思,
而“组”就是组合的意思。
如:
Tuple1=(1,2,3,4,5,6)#元组中有6个元素,都为数字
Tuple2=(‘123’,’ads’)
Tuple3=()#空元组
Tuple4=(‘123’,123,1.23,[1,2,3],(1,2,3))
以上元组的定义都是对的,从中还可以发现,元组的支持类型>列表>字符串>整数
元组和列表的区别:
列表生成后,还可以往里面继续添加数据,也可以从里面删除数据
元组生成以后,就不能修改一下几种类型的数据:整数,浮点数,字符,另一个元组
里面是列表的除外。
数据的读取
字符串、元组、列表三种数据结构的读取方式完全一样
1.指定下标
在大多数的编程语言里面,下标都是从0开始的,Python也不例外,
也是从第0个开始,第0个是元素最左边那个。
String name=’张三’
在字符中,,第0个字符是“张”,第一个是“三”,以此类推
List=[“1”,”2”,”3”]
在列表中,第0个是“1”,以此类推
Tuple=(1,2,3)
在元组中,第0个元素是1,以此类推
在以上3种数据类型中,想取任何一个元素的内容,都可以直接使用以下表达方式:
变量名[下标]
来获取对应下标的内容
下标:
范围:
0-字符长度的-1,如字符串长度为8个字符,则范围为0-7
实际上我们的取值范围为:-7到0到7
#下标中,如果为正值,则是正向取值,如:
Name=’12345’
Name[0]=>’1’
Name[1]=>’2’
Name[-1]=>’5’
2.切片操作
字符串通过切片以后,结果还是字符串,列表切片以后还是列表,元组切片后还是元组
为什么需要切片,需要获取某个范围的内容时,需要用到切片操作
切片格式为:
变量名[开始位置的下标:结束位置的下标:步长]
其中,开始位置的下标,结束位置的下标,步长,都可以部分省略
结束位置的下标从0-字符长度的-1位
Name=’123456’
Name[1:3]#读取下标1到3位的内容
3.拼接和修改
字符串的拼接
string1=”1234”
string2=”5678”
string3=string1+string2
print(string3)
元组与元组之间也是可以相加的,相加表示两个元组拼接在一起
Tp=(‘123’,’456’)
Tp2=(‘789’,’1234’)
tp3=Tp+Tp2
print(tp3)
列表与列表之间也是可以相加,相加表示两个列表拼接在一起
以上的拼接原理三个数据类都是一样的,掌握一个,其他的通用
修改内容
字符串的修改
字符串重新赋值即可修改
Name=’123’
Name=’456’
print(Name)#’456’
元组和列表的修改用下标完成
变量名[下标]=新的值
list=[1,2,3]
list[1]=4
字典与集合
1、字典
字典就是使用大括号括起来的键(key)值(value)对,每个键值之间使用英文逗号分隔,
每个key-value之间使用英文冒号分隔,如:
Dict={‘name’:’123’,’work’:’java Eg’}
key:中文、英文或数据,但不能重复
value:可以是任意字符串、数字、列表、元组或另一个字典,value可以重复
字典的取值:
变量名[key]
变量名.get(key)
2、集合
集合就是没有key的,由大括号括起来的内容,而内容可以是不同的数据类型,如:
Set={‘1’,2,3,’c’}
集合里面的元素是不能重复的,集合也是表现出了无序特征
集合最大的应用之一就是去重操作,
例如:把一个带有重复元素的列表先转换为集合再转回列表,那么重复的内容元素就只会保留一个,
把列表转换为集合需要使用set()函数,把集合转换为列表用list()函数
List=[3,1,2,3,1,2,3,12,1]
Uniue = List(Set(list))
Print(Uniue)
条件语句
1、if语句
If,正如他的英文意思- -样,是“如果”的意思,既如果什么情况发生,则怎么样
用法:
If可以判断真假表达式,或者是是能被判断是否为空的数据结构
在表达式为真时 运行的代码
书写方式:
在所有需要在If里面运行的代码,都需要添加至少一个空格作用缩进,一般约定缩进用4
个空格,即一个tab键,目的是方便阅读,同时满足Ptyhon的规则,一旦退出缩进,程序或新
的代码就不再属于这个if:
If true:
#coding in here
2、多重条件判断
非黑即白
If条件:
Coding
Else:
Codeng
If 条件:
Coding
Elif 条件:
Coding
Else:
coding
3、判断中的短路效应
用两个关键的链接符连接的条件
And:与,都必须为真,如果其中有一个条件为假,那么,后面的条件就不会执行
OR:或,只需要有一个满足真,那么后面的条件就不会被执行
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!