1.类和对象
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
其中,方法是类中定义的函数;类变量是类变量在整个实例化的对象中是公用的,类变量定义在类中且在函数体之外,类变量通常不作为实例变量使用;而实例变量是在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
类的定义:
class 类名:
def 方法1(self ,参数列表)
pass
def 方法2(self ,参数列表)
pass
类的专有方法:
函数 | 描述 |
---|---|
init | 构造函数,在生成对象时调用 |
del | 析构函数,释放对象时使用 |
repr | 打印,转换 |
len | 获得长度 |
cmp | 比较运算 |
call | 函数调用 |
add | 加运算 |
sub | 减运算 |
mul | 乘运算 |
truediv | 除运算 |
mod | 求余运算 |
pow | 乘方 |
2.正则表达式
正则表达式:本质上是一个微小的且高度专业化的编程语言。正则表达式并不是Python的一部分,它被嵌入到 Python中,Python自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。使用正则表达式,需要指定一些规则来描述希望匹配的字符串集合。这些字符串集合可能包含英语句子、 e-mail 地址,或任何字符串。
部分常用的匹配规则总结表
模式 | 描述 |
---|---|
\w | 匹配字母数字及下划线 |
\W | 匹配非字母数字及下划线 |
\s | 匹配任意空白字符,等价于 [\t\n\r\f] |
\S | 匹配任意非空字符 |
\d | 匹配任意数字,等价于 [0-9] |
\D | 匹配任意非数字 |
\A | 匹配字符串开始 |
\Z | 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串 |
\z | 匹配字符串结束 |
\G | 匹配最后匹配完成的位置 |
\n | 匹配一个换行符 |
3.re模块
re 模块使 Python 语言拥有全部的正则表达式功能。
re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none
函数语法:
re.match(pattern, string, flags=0)
参数 | 描述 |
---|---|
pattern | 匹配的正则表达式 |
string | 要匹配的字符串 |
flags | 标志位,用于控制正则表达式的匹配方式 |
re.search方法
re.search 扫描整个字符串并返回第一个成功的匹配
函数语法:
re.search(pattern, string, flags=0)
参数 | 描述 |
---|---|
pattern | 匹配的正则表达式 |
string | 要匹配的字符串 |
flags | 标志位,用于控制正则表达式的匹配方式 |
具体参考-https://www.runoob.com/python3/python3-reg-expressions.html
re库中常用方法
函数 | 描述 |
---|---|
re.match(pattern, string, flags=0) | 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none |
re.search(pattern, string, flags=0) | 扫描整个字符串并返回第一个成功的匹配 |
re.sub(pattern, repl, string, count=0) | 用于替换字符串中的匹配项,repl : 替换的字符串,也可为一个函数 |
re.compile(pattern[, flags]) | 用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用 |
findall(string[, pos[, endpos]]) | 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表 |
re.split(pattern, string[, maxsplit=0, flags=0]) | 能够匹配的子串将字符串分割后返回列表 |
4.datetime模块学习
参考-https://blog.csdn.net/qq_24753293/article/details/80954840
datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1.
datetime模块定义了5个类,分别是
- datetime.date:表示日期的类
- datetime.datetime:表示日期时间的类
- datetime.time:表示时间的类
- datetime.timedelta:表示时间间隔,即两个时间点的间隔
- datetime.tzinfo:时区的相关信息
from datetime import date
from datetime import datetime
from datetime import time
from datetime import timedelta
from datetime import tzinfo
from datetime import * #导入所有的类
datetime.date类
date类有三个参数,datetime.date(year,month,day),返回year-month-day
方法 | 描述 |
---|---|
datetime.date.ctime() | 返回格式如 Mon Aug 06 06:06:06 2019 |
datetime.date.fromtimestamp(timestamp) | 根据给定的时间戮,返回一个date对象;datetime.date.today()作用相同 |
datetime.date.isocalendar() | 返回格式如(year,month,day)的元组,(2019, 08, 12) |
datetime.date.isoformat() | 返回格式如YYYY-MM-DD |
datetime.date.isoweekday() | 返回给定日期的星期(1-7)星期一=1,星期日=7 |
datetime.date.replace(year,month,day) | 替换给定日期,但不改变原日期 |
datetime.date.weekday() | 返回日期的星期 |
datetime.date.strftime(format) | 把日期时间按照给定的format进行格式化 |
datetime的time类
time类有5个参数,datetime.time(hour,minute,second,microsecond,tzoninfo),返回08:29:30
方法 | 描述 |
---|---|
datetime.time.replace() | 替换时间 |
datetime.time.strftime(format) | 按照format格式返回时间 |
datetime.time.tzname() | 返回时区名字 |
datetime.time.utcoffset() | 返回时区的时间偏移量 |
datetime的datetime类
datetime类有很多参数,datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]),返回年月日,时分秒。
方法 | 描述 |
---|---|
datetime.datetime.now().date() | 返回当前日期时间的日期部分 |
datetime.datetime.now().time() | 返回当前日期时间的时间部分 |
datetime.datetime.now() | 返回当前系统时间 |
datetime.datetime.strftime() | 由日期格式转化为字符串格式 |
datetime.datetime.strptime() | 由日期格式转化为字符串格式 |
datetime的timedelta类
datetime.datetime.timedelta用于计算两个日期之间的差值
5.http请求
Python3处理HTTP请求的包:http.client、urllib、urllib3、requests其中,http 比较 low-level,一般不直接使用;urllib更 high-level一点,属于标准库。urllib3跟urllib类似,拥有一些重要特性而且易于使用,但是属于扩展库,需要安装;requests 基于urllib3 ,也不是标准库,但是使用非常方便。
使用的情况,非要用标准库,就使用urllib。如果没有限制,就用requests。
引用-https://blog.csdn.net/byweiker/article/details/79234853
Requests
各种请求方法
import requests
requests.post('http://httpbin.org/post')
requests.put('http://httpbin.org/put')
requests.delete('http://httpbin.org/delete')
requests.head('http://httpbin.org/get')
requests.options('http://httpbin.org/get')
1. 基本GET请求
GET: 请求指定的页面信息,并返回实体主体
import requests
response = requests.get('https://www.baidu.com/?tn=02049043_8_pg&ch=2')
print(response.text)
2.带参数的GET请求
将name和age传进去
import requests
response = requests.get("http://httpbin.org/get?name=germey&age=22")
print(response.text)
使用params的方法:
import requests
data = {
'name': 'germey',
'age': 22
}
response = requests.get("http://httpbin.org/get", params=data)
print(response.text)
3.解析json
将返回值已json的形式展示:
import requests
import json
response = requests.get("http://httpbin.org/get")
print(type(response.text))
print(response.json())
print(json.loads(response.text))
print(type(response.json()))
4.获取二进制数据
记住返回值.content
import requests
response = requests.get("https://github.com/favicon.ico")
print(type(response.text), type(response.content))
print(response.text)
print(response.content)
5.添加headers
有些网站访问时必须带有浏览器等信息,如果不传入headers就会报错
import requests
response = requests.get("https://www.zhihu.com/explore")
print(response.text)
6.基本POST请求
请求服务器接受所指定的文档作为对所标识的URI的新的从属实体
import requests
data = {'name': 'germey', 'age': '22'}
response = requests.post("http://httpbin.org/post", data=data)
print(response.text)