Python爬虫学习笔记之必备基础

2021年12月14日 学习笔记
爬虫必备基础入门
·基础数据类型
·多元数据类型
·逻辑与循环
·函数
·迭代器与生成器
·多线程

变量基础类型
字符串:一切使用单双三引号包裹的“东西”皆为字符串。
注意:\:转译符,不能单独存在于字符串中且不能出现在字符串最后的位置;
整数:正负数字包含0,不包含小数;
浮点数:正负数字不包含0,带小数点的为浮点;
任何数据类型可以转换为:
str()字符串string
int()整数Integer
float()浮点数float
注意事项:
1,浮点转整数会消除小数部分取整,int(3.5)输出为3
2,字符串内为非整数数字无法转换为整数,int(‘adb’)报错,int(‘3.14’)报错
3,字符串内为非数字无法转换为浮点,float(‘dbc’)报错
4,字符串或整数浮点,整数后边多一位小数,float(‘6’)输出为:6.0

变量-结构类型-列表
方法一 空值创建 list_data = list()
方法二 空值创建 list_data = []
元素之间使用,区隔 ; 头尾使用方括弧[]
列表的语法规则
[‘mike’,‘bjing’,28,1.78,true]
列表添加其他类型数据(嵌套)
[[‘make’,28],[‘json’,36],(1,2,3),{‘ma’:‘zzheng’,‘aih’:‘bcheng’}]
特别注意!1,列表内的每个元素(数据),遵守该数据类型的原有规则。比如字符串类型是要加‘’
2,可以多层嵌套,每一层嵌套为一个独立存在
step1 声明创建一个基于个人信息的列表 personal_info = [‘zh’,‘nan’]
step2 列表基本操作
增加数据
personal_info.append(1.74) 最后一位追加->[‘zh’,‘nan’,1.74]
personal_info.insert(1,28)基于索引位置插入数据->[‘zh’,28,‘nan’,1.74]
修改数据
personal_info[1]=36基于索引位置修改数据->[‘zh’,36,‘nan’,1.74]
personal_info[0:2]=[‘高’,35]基于索引范围修改数据->[‘高’,35,‘nan’,1.74]

查询数据
personal_info[1] 基于索引位置取数据->35(整数类型)
personal_info[0:2]基于索引范围查询数据->高,35

删除数据
personal_info.pop(2)基于索引位置删除数据->[‘高’,35,1.74]
personal_info.remove(1.74)基于值删除数据->[‘高’,35];
del personal_info[0:2]基于索引范围删除数据->[ ]
personal_info.clear()清空全部列表元素->[ ]
del personal_info删除整个列表,变量也没了

特别注意:
1,修改数据和查询数据‘一线间’
2,圈定范围修改列表数据时,需要保证添加的数据为可迭代对象
3,注意pop()默认为删除最后一位,可指定索引位置,并返回被删除的值
4,remove()基于值/数据删除数据,如果列表中有多个相同数据时,只删除匹配到的第一个数据

变量-结构类型-字典
方法一 空值创建
dict_1 = dict()
方法二 空值创建
dict_2 = {}推荐
方法三 非空值创建
dict_3 = {‘姓名’:‘mike’,‘年龄’:20} 推荐
dict_4 = dict({‘xm’:‘mike’,‘年龄’:20}) dict_5 = dict(姓名=‘mike’,年龄=20)按照key:value,的格式可以建立多个键值对(items)的字典表一个键和一个值叫键值对在Python里这个叫一个item字典表的语法规则
{‘name’:‘mike’,‘age’:28,‘city’:‘njing’} 键值之间 冒号:分割
键值对(item)之间的分割使用逗号,
字典表加入列表或元组类型 {‘names’:(‘mike’,‘Tim’),‘cities’:[‘bjing’,‘shhai’]}声明创建一个基于个人信息的字典
info = {‘姓名’:‘张三’,‘年龄’:20,‘性别’:‘男’}
字典表基本操作
增加数据
info[‘城市’] = ‘上海’ 字典名[键]=添加的值 修改数据
info[‘年龄’] = 22 字典名[键]=修改的值 查询数据
info[‘姓名’] OR info.get(‘姓名’)
删除数据
del info[’’]
info.pop(‘性别’)
info.clear()清空字典

判断if else
程序逻辑的组成:逻辑语句与逻辑运算构成了程序的逻辑
if 如果
elif 如果
else 否则
if(逻辑运算-条件):
(代码块)
else:
(代码块)
for循环特别注意:
1,必须为可迭代对象
2,基于可迭代对象内部顺序依次取值
3,注意可迭代对象内部的值不会消失

for 变量 in 可迭代对象:
(代码块)
schoolname=‘万’
for name in schoolname
print(name)输出为:万
赋值过程注意变量=可迭代对象的当前元素值

for循环伴侣 range()函数
一口气打印多个hello python
range()
range()-字面意思是“范围”
range()-生成可迭代对象
range()-支持三个参数
range(开始,截至,步长)range(0,10)生成0-9一共十个数字的可迭代对象range(10)只有一个参数,默认起0
range(0,10,2)0起 10止 2步长 0,2,4,6,8

while循环区别:
for循环基于可迭代对象;
while循环基于逻辑运算结果/条件,决定是否继续循环
特别注意:
1,while 可以轻松构建死循环
2,while 和for循环有交叉应用点,但是不能完全互相代替
3,缩进 indent 要注意,从属关系要注意while(逻辑运算-条件):
(代码块)
number = 0
while number<5:
print(number)
number = number + 1
输出为:0,1,2,3,4

函数
函数名代表函数本身声明函数的关键字
def my_function(): 注意标点符号
注意缩进 print(‘hello’)
result=1+1
函数功能体,具体干活的代码

return result 函数返回值
函数是一个组织性问题,不是一个具体的功能问题,干活的还是if,else,for,while
声明函数一定要在调用函数之前

什么是迭代器和生成器
可迭代对象:可迭代对象并不是指某一个数据类型,而是特指存储了元素的一个容器对象这里的容器对象可以具象为:列表,字典,元组,字符串,range都算是一个‘容器’
可迭代对象有个方法叫_iter_()方法,翻译过来叫‘迭代’
纯可迭代对象的内部数据“所见即所得”可迭代的数据是自己已经看的见的数据
迭代器:相当于一个库存
首先迭代器肯定是一个可迭代对象
迭代器拥有迭代对象的所有特征
迭代器同时拥有_iter_()和_next_()方法
迭代器可以记住遍历对象的位置(for的工作核心之一)
迭代器是一个惰性机制

生成器:首先生成器肯定是一个迭代器,也是一个可迭代对象一边迭代一边生成数据
生成器有_iter_()和_next_()
还有一个yield关键字/命令(类似return)
生成器之所以能生成是因为保存了一套算法/逻辑可以持续生成数据yiled返回一个值,但是不会结束函数,会记住当前值的位置
严格的说迭代器不是直接声明的而是从常规可迭代对象转换过来的
特别注意:
1,通过iter()转换成迭代器后,迭代器不会引用I_Data而是直接创建自己的对象
2,注意迭代器里的元素取安装顺序取出,取一个少一个,直到取完为止
3,迭代器内元素取完以后输出错误信息,stoplteration

在for循环中可迭代对象和迭代器的不同表现特别注意:
1,for循环每次从迭代器中取数据也是一次一次的next,但是for不会因为取完数据而报错。其实不是不报错而是把错误给屏蔽掉了2,迭代器是一个单向数据获取并减去库的机制,取完了就没有了,与之类币的就是可迭代对象,每次使用都是从头给你来一次
最简单的生成器
def gen_num():
yiled 1
yiled 2
yiled 3

以逻辑输出生成器
def gen_num():
n=[1,2,3]
for i in n:
yield i

注意:
1,return命令是函数的‘终结者’,遇到return函数结束
2,yield是生成器的标志之一,是使用的时候在进行计算返回结果,每次返回记录上一次的位置。

多线程,基本多线程构建导入线程模块 import threading,os,time
创建一个def任务
def my_task1(name,message):
print(‘i am %s’%name)
#time.sleep(1)
print(message)

创建一个DEF任务
def my_task2(name,message):
print(‘i am %s’%name)
#time.sleep(1.5)
print(message)
创建线程1
T1 = threading.Thread(target=my_task1,args=(‘正’,‘hello world’))
创建线程2
T2 = threading.Thread(target=my_task2,args=(‘反’,‘hello python’))
启动线程1
T1.start()
启动线程2
T2.start()
print(‘python主线程结束’)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值