Python爬虫前置知识
注释
单行注释:#
多行注释:’‘’
# print('你不好使') 因为你把代码写在了注释的后面# 多行注释
'''
print('哈哈')
print('嘿嘿')
'''
数据类型
Number 数值 (int/float)
boolean 布尔
string 字符串(使用的是单引号 或者双引号)
list 列表
tuple 元组
dict 字典
# Number 数值
money = 5000 #int
money1 = 1.2 #float# boolean 布尔
sex = True
gender = False# string 字符串 使用的是单引号 或者双引号
s1 = "嘀嗒嘀嗒嘀"# 单引号和双引号的嵌套
s4 = '"嘿嘿嘿"'
s5 = "'嘿嘿'"# list 列表
name_list = ['周杰伦','科比']# tuple 元组
age_tuple = (18,19,20,21)# dict 字典
# 格式:变量的名字 = {key:value,key1:value1}
person = {'name':'红浪漫','age':18}
单引号和双引号可以互为嵌套,但单引号不能套单引号 双引号不能套双引号
type方法判断变量的数据类型:格式:type(变量)
类型转换
转换为整型:int()
# str --> int
a = '123'
print(type(a))
b = int(a)
print(type(b))# float --> int
a = 1.63
print(type(a))
b = int(a)
print(type(b))# boolean --> int
a = False
print(type(a))
b = int(a)
print(type(b))a = '1.23'
print(type(a))
b = int(a)
print(b)a = '12ab'
print(type(a))
b = int(a)
print(b)
123.456 和 12ab 字符串,都包含非法字符,不能被转换成为整数,会报错
将float转为整数 那么会返回的是小数点前面的数据
转换为浮点数:float()
a = '12.34'
print(type(a))
b = float(a)
print(type(b))a = 666
print(type(a))
b = float(a)
print(type(b))
转换为字符串:str()
a = 80
print(type(a))
b = str(a)
print(type(b))a = 1.2
print(type(a))
b = str(a)
print(type(b))# 布尔类型转换为字符串
a = True
print(type(a))
b = str(a)
print(type(b))
转换为布尔:bool()
# 什么情况下是False
print(bool(0))
print(bool(0.0))
print(bool(''))
print(bool(""))
print(bool([]))
print(bool(()))
print(bool({}))
输出/输入
# 普通输出
print('故事里的小黄花,从出生那年就飘着')# 格式化输出
age = 18
name = '红浪漫晶哥'
# %s 代表的是字符串 %d 代表的是数值
print('我的名字是%s,我的年龄是%d' % (name,age))# 输入
name = input('请输入您的名字')
print('我的名字是:%s' % name)
条件判断
# 在控制台上输入您的成绩分数
# 如果你考了90以上 成绩为优秀
# 如果你考了80以上 成绩为良好
# 如果你考了70以上 成绩为中等
# 如果你考了60以上 成绩为合格
# 否则 成绩为不合格score = int(input('请输入您的成绩'))
if score >= 90:print('优秀')
elif score >= 80:print('良好')
elif score >= 70:print('中等')
elif score >= 60:print('及格')
else:print('不及格')
for循环
# 格式: for 变量 in 要遍历的数据:
# 方法体# 循环字符串
s = 'china'
for i in s:print(i)# range方法的结果 一个可以遍历的对象
range(起始值,结束值) 左闭右开区间
for i in range(1,6):print(i)# range(起始值,结束值,步长) 左闭右开区间
# 1 4 7 10
for i in range(1,11,3):print(i)# 循环一个列表
a_list = ['周杰伦','林俊杰','陶喆','庞龙']
for i in a_list:print(i)# 判断列表中的元素的个数
print(len(a_list))
# 0 1 2 遍历列表中的下标
for i in range(len(a_list)):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('h'))
print(s.endswith('n'))
print(s.upper())s1 = 'aaabb'
print(s1.count('b'))s2 = 'cccdd'
print(s2.replace('c','d'))s3 = '1#2#3#4'
print(s3.split('#')) # 结果为:['1', '2', '3', '4']s4 = 'CHINA'
print(s4.lower())s5 = ' a '
print(len(s8)) # 空格算长度 结果为:7
print(len(s5.strip()))s6 = 'a'
print(s6.join('hello')) # 结果为:haealalao
列表
添加
# append 追加 在列表的最后来添加一个对象/数据
food_list = ['铁锅炖大鹅','酸菜五花肉']
food_list.append('小鸡炖蘑菇')
print(food_list)
# 结果为:['铁锅炖大鹅', '酸菜五花肉', '小鸡炖蘑菇']# insert 插入
char_list = ['a','c','d']
# index的值就是你想插入数据的那个下标
char_list.insert(1,'b')
print(char_list)
# 结果为:['a', 'b', 'c', 'd']# extend
num_list = [1,2,3]
num1_list = [4,5,6]
num_list.extend(num1_list)
print(num_list)
# 结果为:[1, 2, 3, 4, 5, 6]
修改
city_list = ['北京','上海','深圳','武汉','西安']
# 将列表中的元素的值修改,可以通过下标来修改,注意列表中的下标是从0开始的
city_list[4] = '大连'
print(city_list)
# 结果为:['北京', '上海', '深圳', '武汉', '大连']
查询
# in 是判断某一个元素是否在某一个列表中
food_list = ['锅包肉','汆白肉','东北乱炖']# 判断一下在控制台输入的那个数据 是否在列表中
food = input('请输入您想吃的食物')if food in food_list:print('在')
else:print('不在,一边拉去')# not in
ball_list = ['篮球','台球']
# 在控制台上输入你喜欢的球类 然后判断是否不在这个列表中
ball = input('请输入您喜欢的球类')
if ball not in ball_list:print('不在')
else:print('在')
删除
a_list = [1,2,3,4,5]
del a_list[2] #根据下标来删除列表中的元素
print(a_list)b_list = [1,2,3,4,5]
b_list.pop() # pop是删除列表中的最后一个元素
print(b_list)c_list = [1,2,3,4,5]
c_list.remove(3) # 根据元素来删除列表中的数据
print(c_list)
元组
a_tuple = (1,2,3,4)
print(a_tuple[0])# 元组是不可以修改里面的内容的
a_tuple[3] = 5 # 报错a_tuple = (5)
print(type(a_tuple)) # 结果:<class 'int'>
# 当元组中只要一个元素的时候 那么他是整型数据
# 定义只有一个元素的元组,需要在唯一的元素后写一个逗号
b_tuple = (5,)
print(type(b_tuple)) # 结果:<class 'tuple'>
列表中的元素是可以修改的 而元组中的元素是不可以被修改
切片
s ='hello world'
print(s[0]) # 在切片中直接写一个下标
print(s[0:4]) # 左闭右开区间 包含坐标的数据 不包含右边的数据
print(s[1:]) # 是从起始的值开始 一直到末尾
print(s[:4]) # 是下标为0的索引的元素开始 一直到第二参数为止 遵循左闭右开区间
print(s[0:6:2]) # 从下标为0的位置开始 到下标为6的位置结束 每次增长2个长度# 输出结果:
h
hell
ello world
hell
hlo
字典
查询
# 定义一个字典
person = {'name':'吴签','age':28}# 访问person的name
print(person['name'])# 使用[]的方式,获取字典中不存在的key的时候 会发生异常 keyerror
print(person['sex']) # 报错# 不能使用.的方式来访问字典的数据
print(person.name) # 报错
print(person.get('name'))
print(person.get('age'))# 使用.的方式,获取字典中不存在的key的时候 会返回None值
print(person.get('sex'))
修改
person = {'name':'张三','age':18}# 修改name的值为法外狂徒
person['name'] = '法外狂徒'
添加
person = {'name':'老马'}# 给字典添加一个新的key value
# 如果使用变量名字['键'] = 数据时 这个键如果在字典中不存在 那么就会变成新增元素
person['age'] = 18# 如果这个键在字典中存在 那么就会变成这个元素
person['name'] = '阿马'
删除
# del
# (1) 删除字典中指定的某一个元素
person = {'name':'老马','age':18}# del person['age']
# 删除之后
print(person) # 结果:{'name': '老马'}# (2) 删除整个字典
del person
# 删除之后
print(person) # 结果:报错,person已不存在# clear
# (3) 清空字典 但是保留字典对象
# 清空指的是将字典中所有的数据 都删除掉 而保留字典的结构
person.clear()
print(person) # 结果:{}
遍历
person = {'name':'阿马','age':18,'sex':'男'}# (1) 遍历字典的key
# 字典.keys() 方法 获取的字典中所有的key值 key是一个变量的名字 我们可以随便起
for key in person.keys():print(key)# (2) 遍历字典的value
# 字典.values()方法 获取字典中所有的value值 value也是一个变量 我们可以随便命名
for value in person.values():print(value)# (3) 遍历字典的key和value
for key,value in person.items():print(key,value)# (4) 遍历字典的项/元素
for item in person.items():print(item)
文件
打开或创建文件
# 创建一个test.txt文件
# open(文件的路径,模式)
# 模式: w 可写 r 可读
open('test.txt','w') #如果文件不存在,则创建文件# 打开文件
fp = open('test.txt','w')
fp.write('hello world')# 文件夹是不可以创建的 暂时需要手动创建
fp = open('demo/text.txt','w')
fp.write('hello world')# 文件的关闭
fp = open('a.txt','w')
fp.write('hello')
fp.close()
写文件
# 写数据
# write方法
fp = open('test.txt','a')
fp.write('hello world,i am here\n' * 5)
fp.close()# 如果文件存在 会先清空原来的数据 然后再写
# 如果想在每一次执行之后都要追加数据
# 如果模式变为了a 那么就会执行追加的操作# 读数据
fp = open('test.txt','r')
# 默认情况下 read是一字节一字节的读 效率比较低
content = fp.read()
print(content)# readline是一行一行的读取 但是只能读取一行
content = fp.readline()
print(content)# readlines可以按照行来读取 但是会将所有的数据都读取到 并且以一个列表的形式返回
# 而列表的元素 是一行一行的数据
content = fp.readlines()
print(content)
文件序列化:json的dumps、dump、loads、load方法
fp = open('test.txt','w')
# 默认情况我们只能将字符串写入到文件中
fp.write('hello world')
fp.close()fp = open('test.txt','w')
# 默认情况下,对象是无法写入到文件中 如果想写入到文件 那么必须使用序列化操作
name_list = ['zhangsan','lisi']
fp.write(name_list) # 结果:报错。write方法参数必须是个字符串# 序列化的2种方式
# 方式一:dumps()
fp = open('test.txt','w')
name_list = ['zs','ls']
# 导入json模块到该文件中
import json
# 序列化:将python对象 变成 json字符串
names = json.dumps(name_list)
# 将names写入到文件中
fp.write(names)
fp.close()# 方式二:dump 在将对象转换为字符串的同时,指定一个文件的对象 然后把转换后的字符串写入到这个文件里
fp = open('text.txt','w')
name_list = ['zs','ls']
import json
# 相当于 names = json.dumps(name_list) 和 fp.write(names)
json.dump(name_list,fp)
fp.close()# 反序列化:将json的字符串变成一个python对象
fp = open('text.txt','r')
content = fp.read()
# 读取之后 是字符串类型的
# loads方法:方法参数是读到的内容
import json
# 将json字符串变成python对象
result = json.loads(content)
# 转换之后
print(type(result))# load 方法:方法参数是打开的文件
fp = open('text.txt','r')
import json
result = json.load(fp)
print(result)
fp.close()
dumps、dump、loads、load的区别
异常
# 异常的格式
# try:
# 可能出现异常的代码
# except 异常的类型
# 友好的提示try:fp = open('text.txt','r')fp.read()
except FileNotFoundError:print('系统正在升级,请稍后再试。。。')
Python爬虫前置知识相关推荐
- python爬虫——基础知识
python爬虫--基础知识 一.网页基础知识 二.爬虫的思路 1.HTML文档(超文本) 三.ROBOTS协议 四.浏览器发送HTTP请求的过程 1.http请求过程 2.请求 五.SSL连接错误 ...
- Python爬虫核心知识-第二章:2.2 爬虫urllib.parse模块
Python爬虫核心知识 第二章:2.2 爬虫urllib.parse模块 2.2 爬虫urllib.parse模块 Python中的urllib.parse模块中,提供了很多用来解析和重组URL的函 ...
- Python爬虫核心知识-序章:课程前导-爬虫的相关法律法规
Python爬虫核心知识 序章:课程前导-爬虫的相关法律法规 爬虫程序是一种技术产物,爬虫代码本身并未违反法律.但程序运行过程中有可能对他人经营的网站造成 破坏,爬取的数据有可能涉及隐私或机密,数据的 ...
- python爬虫用途-Python爬虫入门知识:解析数据篇
首先,让我们回顾一下入门Python爬虫的四个步骤吧: 而解析数据,其用途就是在爬虫过程中将服务器返回的HTML源代码转换为我们能读懂的格式.那么,接下来就正式进入到解析数据篇的内容啦. Part 1 ...
- python爬虫基础知识
今天学习了爬虫原理,网络通信基于URL统一资源定位器,这就是最简单最原始的爬虫. 欢迎加微信18599911861有更多python爬虫教程视频资源分享. 网络爬虫(又被称为网页蜘蛛,网络机器人,在F ...
- (二)python爬虫基础知识续
爬虫基础知识二 爬虫应用 数据爬取(微指数) 搜索引擎 app或网页的资源来源 浏览器能做的事情,原则上爬虫都能完成 12306抢票(机器学习可以识别验证码,或者在不需要验证码的合作网站爬取)(微信和 ...
- Python爬虫底层知识简介 - AI小白进阶之路
目录 一.通讯协议 1.1 端口 1.2 通讯协议 二.网络模型 2.1 网络模型结构 2.2 HTTPS是什么 2.3 SSL怎么理解 三.爬虫介绍 3.1 什么是爬虫 3.2 为什么要爬虫 3.3 ...
- python爬虫高级知识兼实例汇总-中华英才网
我的CSDN高级爬虫知识兼实例教程: 中华英才网爬虫程序解析(1)-基础的爬虫程序实现 中华英才网爬虫程序解析(2)-多线程threading模块 中华英才网爬虫程序(3)-queue和threadi ...
- Python爬虫基本知识:什么是爬虫?
一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一 ...
- python爬虫基本知识_爬虫 (十三) 学习 python 基础知识点的正确姿势 (六)
我会以比较学习的方式,主要拿Python和我之前学习的javascript进行比较,拿学习javascript的学习经历来迁移到学习Python,如果你在此之前有一门编程思维,那么你可以这么做,如果没 ...
最新文章
- 滴滴人脸识别申诉照片怎么拍_滴滴司机理发被停账号,平台规则到底如何遵守才能避免踩坑?...
- Java SHAA加密
- JS实现生成一个周对应日期数组
- linux的基础知识——捕捉SIGCHLD、信号传参,中断系统调用
- Mysql 如何通过binlog日志恢复数据
- CCF201903-1 小中大
- 保存到本地_不用任何软件工具找回已保存在本地的网页密码
- 大家觉得现在最赚钱的电商形式是什么?
- 循环数组的动态规划问题
- arduino的矩阵示例程序_用树莓派 Arduino 制造 LED 矩阵彩灯
- 10 个开源压力测试工具
- (论文加代码)基于deap数据集的脑电情绪识别(二分类改为八分类)
- 大华摄像机调试以及保存视频
- 四、六级考试的标准分计算方法-“710分转换表”
- 如何获取qq空间图片的url
- 开源RapidScada插件开发---短信报警插件
- MongoDB+模板引擎 项目学习 ---学生档案管理
- 文本分析--NLTK自然语言处理
- 对于深度与广度的思考
- TensorFlow Eager 教程(转)
热门文章
- 抖音上热门的六大规律
- 引用限定符 reference qualifiers
- CCD的分辨率与像元尺寸真的没有关系么?
- “变态”的JavaScript——JavaScript的发明人--布兰登·艾奇(Brendan Eich)
- html文档怎么设置默认浏览器打开,win10系统如何设置HTML文件指定浏览器打开?...
- OSChina 愚人节乱弹 ——我们组建个程序员国度吧
- node.js 在 Express4.0 框架使用 Connect-Busboy 实现文件上传
- python datetime库的基本使用
- tk免费顶级域名注册及使用
- pm2和pm2-logrotate 日志管理 初探