python爬虫学习·
python基础
一.python环境安装
二.pip
点我学习pip
scrapy是爬虫的框架,想要使用必须放在python的环境中
使用pip指令提供了对python包的查找 下载 安装 卸载等功能
修改pip下载源
pip install 包名 -i 国内源地址
三.运行python文件
1.终端运行
win+r+cmd
一般不使用 无法保存 关闭终端窗口便消失
- 输入python
- 退出:
exit()
ctrl+z ==> enter
- 退出:
- 输入ipython
跟python的区别是有高亮显示
2.pycharm运行
3.vscode运行
四.注释
1.注释
在我们工作编码的过程中,如果一段代码的逻辑比较复杂,不是特别容易理解,可以适当的添加注释,以辅助自己或者其他编码人员解读代码。
2.注释的分类
单行注释以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用。
多行注释以 ‘’’ 开始,并以 ‘’’ 结束,我们称之为多行注释。
单行注释
# #开头右边的都是注释,解析器会忽略注释
print('hello world') #我的作用是在控制台输出hello world
多行注释
以 ''' 开始,并以 ''' 结束,我们称之为多行注释。
五.变量
1.变量类型
number,bool,string,不做介绍
与c++区别是number中没有long和double
因为long类型是python2中的内容
在爬虫的使用中complex一般不使用
字符串中必须使用单引号或者双引号
1.1string(字符串)
单引号和双引号之间可嵌套
单引号嵌套双引号,双引号嵌套单引号是不可行的
因为字符串是进行就近匹配的
1.2列表_元组_字典
# list 列表
# 应用场景 :当获取到很多个数据的时候,那么我们可以将他们存储到列表中 然后使用列表访问
name_list=['这是一个','测试']
print(name_list)
# tuple 元组
age_tuple=(18,19,20,21)
print(age_tuple)
# dict 字典
# 应用场景 : scrapy框架使用
# 格式 : 变量名字 ={key:value,key1:value1}
person ={'name':'张三','age':18}
print(person)
2.查看数据类型
在爬取数据时无法保证爬取的数据是哪种类型,这时候我们就需要判断数据类型
type方法判断变量的数据类型
格式:type(变量)
六.标识符和关键字
1.标识符由字母,数字,下划线构成,且开头不能是数字
2.严格使用大小写
3.不能使用关键字
1.命名规范
- 小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,
例如:myName、aDog - 大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:
FirstName、LastName.
还有一种命名法是用下划线“_”来连接所有的单词,比如send_buf.
2.关键字
一些具有特殊功能的标识符,这就是所谓的关键字。
关键字,已经被python官方使用了,所以不允许开发者自己定义和关键字相同名字的标识符。
七.类型转换
1.转换为整型
将浮点数转换成整数
将会返回小数点前的数据
print(int(123.78))
输出123
print(int(True)) # 1 布尔值True转换成为整数是 1
print(int(False)) # 0 布尔值False转换成为整数是 0
# 以下两种情况将会转换失败
123.456 和 12ab 字符串,都包含非法字符,不能被转换成为整数,会报错
print(int("123.456"))
print(int("12ab"))
2.转换为浮点型
a = 666
print(a)
print(type(a))
b = float(a)
print(b)
print(type(b))
输出
666
<class 'int'>
666.0
<class 'float'>
3.转换为字符型
# 强制类型转换为字符串的方法是str()
4.转换为布尔型
如果对非0的整数(int 包含正数和负数)进行bool类型的转换 那么就全都是True
将浮点数转换为bool类型的数据的时候 正的浮点数和负的浮点数的结果是true
只要字符串中有内容 那么在强制类型转换为bool的时候 那么就返回True
只要列表中有数据 那么强制类型转换为bool的时候 就返回True
只要元组中有数据 那么强制类型转换为bool的时候 就会返回True
只要字典中有内容 那么在强制类型转换为bool的时候 就会返回True
# 什么情况下是False
print(bool(0))
print(bool(0.0))
print(bool(''))
print(bool(""))
print(bool([]))
print(bool(()))
print(bool({}))
八.运算符
1.算术运算符
注意:混合运算时,优先级顺序为:** 高于 * / % // 高于 + -
,为了避免歧义,建议使用 ()
来处理运算符优先级。 并且,不同类型的数字在进行混合运算时,整数将会转换成浮点数进行运算
算术运算符在字符串中的使用
- 如果是两个字符串做加法运算,会直接把这两个字符串拼接成一个字符串。
In [1]: str1 ='hello'
In [2]: str2 = 'world'
In [3]: str1+str2
Out[3]: 'helloworld'
In [4]
- 如果是数字和字符串做加法运算,会直接报错。
In [1]: str1 = 'hello'
In [2]: a = 2
In [3]: a+str1
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
TypeError Traceback (most recent call last)
<ipython‐input‐3‐993727a2aa69> in <module>
‐‐‐‐> 1 a+str1
TypeError: unsupported operand type(s) for +: 'int' and 'str'
可以通过字符串相加来解决
#在python中 +两端都是字符串才能进行加法运算
e='123'
f=456
print(e+str(f))#使用字符串转换
- 如果是数字和字符串做乘法运算,会将这个字符串重复多次。
In [4]: str1 = 'hello'
In [5]: str1*10
Out[5]: 'hellohellohellohellohellohellohellohellohellohello'
2.赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | 把 = 号右边的结果 赋给 左边的变量,如 num = 1 + 2 * 3,结果num的值为7 |
# 单个变量赋值
>>> num = 10
>>> num
10
# 同时为多个变量赋值(使用等号连接)
>>> a = b = 4
>>> a
4
>>> b
4
>>>
# 多个变量赋值(使用逗号分隔)
>>> num1, f1, str1 = 100, 3.14, "hello"
>>> num1
100
>>> f1
3.14
>>> str1
"hello
3.复合赋值运算符
4.比较运算符
5.逻辑运算符
九.流程控制语句
1.if判断语句
if 要判断的条件:
条件成立时,要做的事情
age = 30
if age >= 18:
print("我已经成年了")
输出:我已经成年了
注意:代码的缩进为一个tab键,或者4个空格,没有缩进则会进行报错
2.if else 语句
if 条件:
满足条件时的操作
else:
不满足条件时的操作
例如
age = 18
if age >= 18:
print("我可以去红浪漫了")
else:
print("未成年,不允许去")
3.elif 语句
if xxx1:
事情1
elif xxx2:
事情2
elif xxx3:
事情3
score = 77
if score>=90:
print('本次考试,等级为A')
elif score>=80:
print('本次考试,等级为B')
elif score>=70:
print('本次考试,等级为C')
elif score>=60:
print('本次考试,等级为D')
elif score<60:
print('本次考试,等级为E')
4.for循环
for 临时变量 in 列表或者字符串等可迭代对象:
循环满足条件时执行的代码
for循环的使用
- 遍历字符串:
for s in "hello":
print(s)
- 打印数字
for i in range(5):
print(i)
十.字符串高级
# - 获取长度:len len函数可以获取字符串的长度。
# - 查找内容:find 查找指定内容在字符串中是否存在,如果存在就返回该内容在字符串中第一次出现的开始位置索引值,如果不存在,则返回-1.
# - 判断:startswith,endswith 判断字符串是不是以谁谁谁开头/结尾
# - 计算出现次数:count 返回 str在start和end之间 在 mystr里面出现的次数
# - 替换内容:replace 替换字符串中指定的内容,如果指定次数count,则替换不会超过count次。
# - 切割字符串:split 通过参数的内容切割字符串
# - 修改大小写:upper,lower 将字符串中的大小写互换
# - 空格处理:strip 去空格
# - 字符串拼接:join 字符串拼接
s='china'
print(len(s))#长度
print(s.find('a'))#查找
print(s.startswith('c'))
print(s.endswith('a')) #判断字符串是不是以谁谁谁开头/结尾
s3 = 'aaabb'
print(s3.count('b'))#返回b在字符串的出现次数
print(s3.replace('a','d'))#替换字符串中指定的内容
s5 = '1#2#3#4'
print(s5.split('#'))#通过参数的内容切割字符串
s8 = ' a '
print(len(s8))
print(len(s8.strip()))# 去除空格