对象与类
对象可以看做数据以及一系列可以存取、操作这些数据的方法所组成的集合。
对象的优点有:1.多态2.封装3.继承
多态与封装的概念有些相似,但多态的概念是可以让用户对于未知类的对象进行方法调用;而封装是可以不用关心对象是如何构建的而直接使用。
类就是种类、类型的意思。所有的对象都属于某一个类,称为类的实例。
子类与超类是相对关系。
类的主要任务是定义它的实例会用到的方法。
正则表达式
正则表达式是可以匹配文本片段的模式。
1.通配符:正则表达式可以匹配多于一个的字符串。
比如:点号(.)可以匹配任何字符,除了换行符。
所以“.ython”可以匹配字符串“python”或者“jython”等。
对特殊字符进行转义:对点号(.)进行转义,否则会识别其为通配符
2.字符集:可以添加[]来控制字符串来创建字符集。字符集可以匹配它所包括的任意字符,
比如:[pj]ython只能够匹配到python和jython。
[a-zA-Z0-9]能够匹配任意大小写字母和数字。
也可以反转字符集,使用^。
例如:[^abc]可以匹配任何除了abc之外的字符。
3.选择符和子模式:若在只需要匹配单独的两个字符串时,可以使用管道符号‘|’。
例如:只想匹配‘python’和‘perl’,可以写成‘python|perl’。
有些时候不需要对整个模式使用选择运算符,这时可以使用圆括号仅括住需要的部分。
例如:‘p(ython|perl)’这个称为子模式。
4.可选项和重复子模式
若在子模式的后面添加?则代表这个括号内的内容是可选项(非必要的)。
例如:r’(http://)?(www.)?python.org #对www后面的点号进行了转义
可以匹配:‘http://www/.python,org’
‘http://python.org’
‘www.python.org’
‘Python.org’
可选项和重复子模式的其它:问号表示子模式可以出现一次或不出现,而*(允许重复0次或多次)、+(允许重复一次或多次)、{m,n}(允许重复m~n次)则允许出现多次。
5.字符串的开始和结尾:
想要在开始的位置找到相关子字符串,则可以使用脱字符标记开始。
例如:‘^ht+p’会匹配‘http://www.python.org’等。
字符串结尾处寻找则用‘$’字符。
re模块
re模块中包含了一些对正则表达式操作的函数。
re模块中的函数:
compile(pattern[,flags]):根据包含正则表达式的字符串创建模式对象。
search(pattern,string[,flags]):在字符串中寻找模式。
match(pattern,string[,flags]):在字符串的开始处匹配模式。
split(pattern,string[,maxsplit=0]):根据模式的匹配项来分割字符串。
findall(pattern,string):列出字符串中模式的所有匹配项。
sub(pat,repl,string[,count=0]):将字符串中所有pat的匹配项用repl来代替。
escape(string)将字符串中所有特殊正则表达式字符转义。
re模块中的方法:
group([group1,…]):获取给予子模式的匹配项。
start([group]):返回给定组的匹配项的开始位置。
end([group]):返回给定组的匹配项的结束位置。
span([group]):返回一个组的开始与结束位置。
http请求
我们可能需要通过某些http接口提交一些数据到我们的资产管理系统、监控系统等,我们可以使用python的第三方库requests来进行操作。
1、发送请求
import requests
r0 = requests.get(“http://python.com”)
r1 = requests.post(“http://python. com”,data={key:value})
joon_data = {“user”:“python”,“op”:“post”}
r11 = requesets.post(“http://python.com”,json=json_data)
r = requests.put(‘http://python.com/put’, data = {‘key’:‘value’})
r = requests.delete(‘http://python.com/delete’)
r = requests.head(‘http://python.com/get’)
r = requests.options(‘http://python.com/get’)
2、URL参数
URL 的查询字符串(query string)传递某种数据。如果你是手工构建 URL,那么数据会以键值对的形式置于 URL 中,跟在一个问号的后面。例如: python.com/get?key=val。 requests 允许你使用 params 关键字参数,以一个字符串字典来提供这些参数。 payload = {‘key1’: ‘value1’, ‘key2’: ‘value2’} r = requests.get(“http://python.com/get”, params=payload) 通过打印输出该 URL,你能看到 URL 已被正确编码: print(r.url)
3、相应内容
通过发送请求返回的对象,我们就可以获取到服务器对我们的相应内容了。Requests 会自动解码来自服务器的内容。请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 r.text 之时,Requests 会使用其推测的文本编码。 你可以找出 Requests 使用了什么编码,并且能够使用 r.encoding 属性来改变它:
r.encoding’utf-8’>>> r.encoding = ‘ISO-8859-1’ 如果返回的json串,可以直接使用r.json()获取到字典对象进行操作 如果响应内容是二进制呢? 对于响应内容是非文本请求,可以使用r.content访问到内容。 例如,以请求返回的二进制数据创建一张图片,你可以使用如下代码: from PIL import Image>>> from io import BytesIO>>> i = Image.open(BytesIO(r.content))
4、定制请求头
有些请求需要有指定的请求头才能正确获取到内容。 headers = {‘user-agent’: ‘my-app/0.0.1’} r= requests.get(“http://python.com”,headers=headers)
5、cookies
有些请求需要依赖于cookies来完成操作,就需要从上个请求中获取到cookies然后传入下一个请求: r0 = requests.get(“http://python.com/login”) r1 = requests.post(“http://python.com/asset",data={“hostname”:"python”,cookies= r0.cookies}