Python基础学习日记-爬虫

Python学习

输出

print("hello")

换行:print("",end="\n")

输入

name = input("请输入:")
print(name)

判断语句

if 3<4:
    print("条件成立") # 缩进四个空格
elif 3==4:
    print("分支条件成立")
else
    print("条件不成立")
# 判断条件
and 并且
or 或者
not 取反

变量

name="hello"
print(name)

num=10
str(num) # 将num转为字符串类型

字符串

if "yes" in "yess"
    print("yes")

in关键字用来判断一个字符串是否包含在另一个字符串中。

name="hello"
print(name[0:100]) # 输出hello
print(name[0:100:2]) # 输出hl0
print(name[-1]) # 输出o,输出从后数n位字符
# 变量[脚标的开始位置:角标的结束位置:步长值]

字符串常用属性

string="hello"

string.lower # 返回小写字符
string.upper # 返回大写字符
string.split("e") # 切割字符串,返回一个列表

列表

alist=["tom","jerry"] # 创建列表
alist[0] # 取列表值
alist.index("tom") # 返回该值的索引
alist.append("bob") # 向列表中追加内容

元祖

元祖被初始化后值就不可变了,不可删除不可追加,也不可修改

atuple=("tom","jerry") # 创建元祖
atuple[0] # 取值
atuple.index("tom") # 返回该值的索引

字典

字典没有索引值,通过键值对取值

adict={
    
    "tom":"123"} # 创建字典
adict["tom"] # 取值
adict.keys() # 返回一个key列表
adict.values() # 返回一个value列表

循环语句

num =0
while num<10
    print("hello")
    num++
for item in range(10):
	print("hello"+str(item)) # 需要将item转为字符串才能和字符串拼接
    
# 补充知识点
range(1,11) # 生成1-10的数字
range(10) # 生成0-10的数字 	

文件对象

读取文件内容

f=open("C:\\users\\test.txt","rb")   # 建立文件对象 r为读 b为二进制方式
f.read()  # 读取文件 
f.read(5) # 表示读取5个字节
f.seek(0,0) # 设置下标设置为零,第一个为偏移量
f.readline() # 读取一行
f.readlines() # 读取全文,按行返回一个列表
f.close() # 关闭文件

写入文件内容

f=open("C:\\users\\test.txt","wb")   # 建立文件对象
f.writelines([b"test1",b"test2",b"test3"]) # 多行写入
f.close()

模块和函数

import random # 引入随机模块
random.randint(1,3) # 返回一个1-3之间的随机数
random.choice(alist) # alist是一个list,返回list中随机的值

创建一个模块

创建一个文件test.py,写入如下内容:

"""
这里是对这个py文件的描述
介绍模块的作用以及里面的功能
"""
def p_star():
    "这里是方法的描述"
    return "*"*20

p_star() # 执行这个方法

另一个文件中如下调用:

import test

start20=test.p_star()
print(start20) # 打印二十个*号

异常捕获

num=int(input("请输入数字:"))
try:
    a=0/10
except zeroDivisionError:
    print("被除数不能为0")
except ValueError:
    print("不是数字")

面向对象编程

Class Make_Plane(object):
    # 属性
    # color="green"
    # num=3
    
    # 方法
    def move(self):
        print("飞机起飞了")
        
    def getInfo(self):
        print("轮胎数量%d,飞机颜色%s" %(self.num,self.color))
        
    # 构造方法 self表示当前对象
    def _init_(self,COLOR,NUM):
        self.color=COLOR
        self.num=NUM

# 创建对象
myClass=Make_Plane("blue",4)
myClass.move() # 调用方法

爬虫

爬取图片案例:

import urllib.request
import re

Class GetHtml(Object):
    def _init_(self,URL,HEAD):
        self.url=URL
        self.head=HEAD
    
    # 获取网页HTML内容 保存文件到本地
    def get_index(self):
        self.request=urllib.request.Request(self.url)
        self.request.add_header("user-agent",self.head)
        self.response=urllib.request.urlopen(self.request)
        return self.response.read()
    
    # 获取图片的链接
    def get_list(self):
        self.strimglist=[]
        self.imglist=re.findall(b"正则表达",self.get_index())
        for i in self.imglist:
            strimglist.append(self.url+str(i,encoding="utf8"))
        return self.strimglist
        
    # 获取图片
    def get_image(self):
        num = 0
        for self.url in self.get_list():
            num+=1
            with open(str(num)+".jpg","wb") as f:
                f.write(self.get_index())
        
    
html=GetHtml("https://www.baidu.com/","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36")
print(html.get_index()) # 获取该链接的html代码

正则表达式

 # . 匹配单个任意字符
re.findall(".ood","i say Good not food") # 查找以ood结尾的单词,如Good、food

# [] 中的内容会被逐一匹配
re.findall("[Gf]ood","i say Good not food")

# \d 匹配单个数字
re.findall("\d","i am 40")  # 输出 ['4','0']
re.findall("\d\d","i am 40")  # 输出 ['40']

# \w 匹配单个字母、数字、下划线

# \s 匹配空白字符、空格、tab键

匹配一组字符串

re.findall("Good","i say Good not food") # 输出 Good
re.findall("Good|food","i say Good not food") # 输出 Good food
re.findall("")

*号 匹配左邻字符串出现0次或者多次(它左边的字符出现的次数)

re.findall("go*gle","i like google not ggle gooooogle and gogle") # 输出 google ggle gooooogle gogle

+号 左邻字符出现一次或多次(它左边的字符出现的次数)

re.findall("go+gle","i like google not ggle gooooogle and gogle") # 输出 google gooooogle gogle

?号 左邻字符出现0次或1次

re.findall("go+gle","i like google not ggle gooooogle and gogle") # 输出 ggle gogle

{} 指定左邻字符出现的次数

re.findall("go{2}gle","i like google not ggle gooooogle and gogle") # 输出 google
re.findall("go{2,10}gle","i like google not ggle gooooogle and gogle") # 输出 google gooooogle

^ 匹配是否以某个字符串开头

re.findall("^i like","i like google not ggle gooooogle and gogle") # 输出 i like

$ 匹配是否以某个字符串结尾

re.findall("gogle$","i like google not ggle gooooogle and gogle") # 输出 gogle

() 分组保存

re.search("(allen)\\1","my name is allenallen") 

猜你喜欢

转载自blog.csdn.net/Stand_Fast/article/details/119566333