Python爬虫基础之一

发布时间 2023-04-25 09:56:38作者: 华科爬虫

Python爬虫基础包括HTTP协议、HTML、CSS和JavaScript语言基础、requests库的使用、Beautiful Soup库的使用、xpath和正则表达式的使用等。此外,还应该了解反爬虫机制和爬虫的一些常见问题及解决方法。

爬虫学习暂时咕咕了。。。,等有空再继续更新。

一、基础知识准备

Python基础语法还是很简单的,我通过一个个简单的小段代码来进行学习,所需掌握的知识点都包含在这段段代码中,每段代码都有相应详细注释,如果你有其他语言的基础那么Python基础就是轻轻松松的事。

1、条件判断语句

score = 60
if score >=90 and score <=100:
    print("本次考试等级为A")
elif score >=70 and score <90:  #elif == else if
    print("本次考试等级为B")      
else:
    print("本次考试等级为C")      #output: 本次考试等级为C

2、循环语句

2.1 for循环

for i in range(5): #输出5个数 [0 1 2 3 4]
    print(i)

for i in range(0,10,3):#从[0,10),以3为间距输出                #output: [0 3 6 9]
    print(i)


for i in range(-10,-100,-30):#从[-10,-100),以-30为间距     #output: [-10 -40 -70]
    print(i)



name="chengdu" 
for x in name:
    print(x)            #output: [c h e n g d u]

    
a = ["a", "b", "c"] 
for i in range(len(a)):
     print(i, a[i])    #output: [0 a 1 b 2 c]

2.2 while循环

i=0
while i<3:
    print("这是第%d次循环:"%(i+1))
    print("i=%d"%i)
    i+=1

'''#output: 
这是第1次循环:
i=0
这是第2次循环:
i=1
这是第3次循环:
i=2
'''

count = 0
while count<3:
    print(count,"小于3")
    count +=1
else:
    print(count,"大于或等于3")
    
'''#output: 
0 小于3
1 小于3
2 小于3
3 大于或等于3
'''

3、字符串

str="chengdu"              
print(str)                #chengdu
print(str[0])             #c
print(str[0:5])           #[0,5) cheng
print(str[1:7:2])         #[起始位置:结束位置:步进值] hnd
print(str[5:])            #显示5以后的 du
print(str[:5])            #显示5以前的 cheng
print(str+",hello")       #字符串连接 chengdu,hello
print(str*3)              #打印3次 chengduchengduchengdu
print("hello\nchengdu")   #\n换行 hello  chengdu
print(r"hello\nchengdu")  #前面加"r",表示显示原始字符串,不进行转义hello\nchengdu
print("-"*30)             #打印30个“-”

4、列表-List

列表中的每个元素都分配一个数字 - 它的位置或索引,第一个索引是0,第二个索引是1,依此类推。

4.1 列表定义

namelist = ["小张","小王","小李"]
testlist = [1,"测试","str"]  #列表中可以存储混合类型
testlist = [["a","b"],["c","d"],["e","f","g"]] #列表嵌套

4.2 列表元素输出

namelist = ["小张","小王","小李"]
#输出指定元素
print(namelist[1])     #output: 小王

#遍历输出
for name in namelist: 
    print(name)
   
'''output
小张
小王
小李
'''    

#使用枚举函数enenumerate(),同时拿到列表下标和元素类容
for i,name in enumerate(namelist): 
    print(i,name)
    
'''output
0 小张
1 小王
2 小李
'''

4.3 列表元素切片

如下所示:L=[‘Google’, ‘Python’, ‘Taobao’]

4.4 列表元素追加

#append
a = [1,2]
b = [3,4]
a.append(b)  #将b列表当做一个元素加入到a中
print(a)     #output: [1, 2, [3, 4]]

#extend
a = [1,2]
b = [3,4]
a.extend(b) #将b列表中的诶个元素,逐一追加到a中
print(a)    #output: [1, 2, 3, 4]

#insert
a=[1,2,4]
a.insert(2,3) ##在下标为2的位置插入3   #指定下标位置插入元素(第一个表示下标,第二个表示元素)
print(a)  #output: [1, 2, 3, 4]

4.5 列表元素删除

#del
a = ["小张","小王","小李"]
del a[2]                      #删除指定下标元素
print(a)                      #output: ['小张', '小王']

#pop
a = ["小张","小王","小李"]
a.pop()                      #弹出末尾元素
print(a)                     #output: ['小张', '小王']

#remove
a = ["小张","小王","小李"]
a.remove("小李")             #直接删除指定内容的元素
print(a)                    #output: ['小张', '小李']

4.6 列表元素修改

a = ["小张","小王","小李"]
a[2] = "小红"                 #修改指定下标元素内容
print(a)                   #output: ['小张', '小王', '小红']

4.7 列表元素查找

#in / not in
a = ["小张","小王","小李"]
findName = input("请输入你要查找的学生姓名:")
if findName in a:
    print("找到")
else:
    print("未找到")
    
#index
a = ["小张","小王","小李"]
print(a.index("小王",0,2))    #可以查找指定下标范围的元素,并返回找到对应数据的下标  #output: 1
print(a.index("小李",0,2))   #范围区间:左开右闭[0,2) # ValueError: '小李' is not in list

#count
print(a.count("小王"))      #查找某个元素出现的次数  #output: 1

4.8 列表元素反转和排序

a = [1,4,2,3]
a.reverse()             #将列表所有元素反转
print(a)                #output: [3, 2, 4, 1]
 
a.sort()                #升序
print(a)                #output: [1, 2, 3, 4]

a.sort(reverse=True)    #降序
print(a)                #output: [1, 2, 3, 4]

5、前段知识综合练习

Topic: 将8个老师随机分配到3个办公室

import random
offices = [[],[],[]]                            #3个教室
teachers = ["A","B","C","D","E","F","G","H"]    #8个老师
for teacher in teachers:                         #遍历teachers放入office中
    index = random.randint(0,2)                    #产生随机数0,1,2
    offices[index].append(teacher)                 #将teachers追加到office中
i=1 #office1
for office in offices:                             #输出每个office人数和对应的老师
    print("office%d的人数为:%d"%(i,len(office)))
    i += 1  #遍历offices
    for name in office:
        print("%s"%name,end="\t")                 #打印每个office老师的名字
    print("\n")                                    #打印完一个office换行
    print("-"*20)                                 #打印完一个office输出20个-