Python爬虫基础包括HTTP协议、HTML、CSS和JavaScript语言基础、requests库的使用、Beautiful Soup库的使用、xpath和正则表达式的使用等。此外,还应该了解反爬虫机制和爬虫的一些常见问题及解决方法。
上一篇文章讲解了有关条件判断语句、循环语句等相关知识,本节将围绕元组、字典、函数和文件操作几个方面展开。
6、元组-Tuple
元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
6.1 元组定义
tup1=() #空元组
tup2=(5) #<class 'int'> 不是元组
tup2=(5,) #<class 'tuple'>
tup3 = ('Google', 'Python', 1997, 2000)
6.2 元组元素切片
tup=(1,2,3)
print(tup[0]) #第一个元素 #output: 1
print(tup[-1]) #最后一个元素 #output: 3
print(tup[0:2]) #左闭右开[0,2) #output: (1, 2)
6.3 元组元素增加(连接)
tup1 = (12,34,56)
tup2 = ("ab","cd","ef")
tup3 = tup1+tup2
print(tup3) #(12, 34, 56, 'ab', 'cd', 'ef')
6.4 元组元素删除
tup1 = (12,34,56)
#del tup1[0] #不允许删除单个元素
del tup1 #删除了整个元组变量
6.5 元组元素不能修改
tup1 = (12,34,56)
tup1[0] = 72 #报错 不能修改
7 字典-dict
字典使用键值对(key=>value)存储;键必须是唯一的,但值则不必。
7.1 字典定义
dict = {key1 : value1, key2 : value2 }
info = {"name":"简简","age":18}
7.2 字典访问
info = {"name":"简简","age":18}
print(info["name"])
print(info["age"])
#访问不存在键
print(info["sex"]) #直接访问不存在的键,会报错
print(info.get("sex")) #使用get()方法,访问不存在的键,默认返回:none
print(info.get("sex","没有")) #没有找到的时候,返回自定义值 #output: 没有
7.3 字典键值增加
info = {"name":"简简","age":18}
info["sex"]="man" #新增sex
print(info) #output: {'name': '简简', 'age': 18, 'sex': 'man'}
7.4 字典键值删除
#del
info = {"name":"简简","age":18}
del info["name"] #删除name键值对
print(info) #output: {'age': 18}
del info #删除整个字典
print(info) #output: NameError: name 'info' is not defined
#clear
info = {"name":"简简","age":18}
info.clear() #清空字典内键值对
print(info) #output: {}
7.5 字典键值修改
info = {"name":"简简","age":18}
info["age"]=20
print(info)
7.6 字典键值查找
info = {"name":"简简","age":18}
print(info.keys()) #得到所有的键 #output: dict_keys(['name', 'age'])
print(info.values()) #得到所有的值 #output: dict_values(['简简', 18])
print(info.items()) #得到所有的键值对 #output: dict_items([('name', '简简'), ('age', 18)])
#遍历所有的键
for key in info.keys():
print(key) #output: name age
#遍历所有的值
for value in info.values():
print(value) #output: 简简 18
#遍历所有的键值对
for key,value in info.items():
print("(key=%s,value=%s)"%(key,value))
#output: (key=name,value=简简) (key=age,value=18)
8、函数
8.1 函数定义和使用
def printinfo(a,b): #函数定义
c =a + b
print(c)
printinfo(1,2) #函数的使用
8.2 带返回值的函数
def info(a,b):
c =a + b
return c #返回值
print(info(1,2))
8.3 返回多个值的函数
def divid(a,b):
shang = a//b
yushu = a%b
return shang,yushu #多个返回值用逗号隔开
sh,yu = divid(5,2) #需要用多个值来保存返回内容
print("商:%d 余数:%d"%(sh,yu))
9、文件操作
9.1 打开文件(open)
用法:对象=open(文件名,访问模式)
f = open('test.txt', 'w')
9.2 关闭文件(close)
用法:对象.close()
f.close()
9.3 写数据(write)
用法:对象.write()
f=open("test.txt","w") # 打开文件,w(写模式)-文件不存在就在当前路径给你新建一个
f.write("hello,world") # write将字符写入文件
f.close()
9.4 读数据(read)
用法:对象.read()
f=open("test.txt","r") #打开文件,r(读模式)
content=f.read(5) #read读取5个字符
print(content)
f.close()
9.5 读一行数据(readline)
用法:对象.readline()
f = open('test.txt', 'r')
content = f.readline()
print("1:%s"%content)#读取一行
content = f.readline()
print("2:%s"%content)#再读下一行
f.close()
9.6 读多行数据(readlines)
用法:对象.readlines()
f=open("test.txt","r") #打开文件,r(读模式)
content=f.readlines() #readlines读取整个文件,以列表形式输出
print(content) #输出形式为列表 #output: ['hello,world\n', 'hello,world']
#对列表进行处理,按序号一行一行输出
i=1
for temp in content:
print("%d:%s" % (i, temp))
i += 1 #output: 1:hello,world 2:hello,world
f.close()
9.7 OS模块
使用该模块必须先导入模块:
import os
os模块中的函数: