1.python基础知识
pandas常用函数清单: 1.import模块导入;2.文件读取(数据导入)3.数据预处理 4.数据筛选 5.数据运算与排序 6. 常用的统计函数
Python数据分析学习路径图 : 1.基础知识和正则表达式 2.数据采集和收集(爬虫)3. 数据分析 4. 数据可视化
(1)关于序列: (list, string, tuple)
操作包括: 索引、切片、加、减、成员操作、最大最小值、长度等
需要注意的是关于tuple的属性:成员不可更改,不过对于a = (1,2,[1,2,3],4)中a的直属子元素不可更改,不过可以尝试a[2].append(3)结果是可更改的;tuple定义单个元素b = (2,), 其中的“,”不可省略。
list: 生成方式还有列表推导式[x*x for x in range(1,10,2)]
dict: 关于爬虫headers和params的定义(复制的信息进行更改)
(2)强大的内建函数
map() : map(函数, 序列),函数作用于序列的每一个元素。返回序列
reduce() 累计操作: 累计的方式取决于传入的函数;返回一个元素
filter() 筛选: 用公式(函数)对序列进行筛选,输出筛选值。
map(str,[1, 2, 3, 4, 5, 6, 7, 8, 9])
['1', '2', '3', '4', '5', '6', '7', '8', '9']
reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数 ;结果:15
defis_odd(n):
returnn %2==1
filter(is_odd, [1,2,4,5,6,9,10,15])# 结果: [1, 5, 9, 15]
(3)基础操作技巧与规范
[1]定义函数需要对于函数的功能与参数进行定义说明;
[2]对于元素的属性操作忘记了,可以通过dir()函数进行查看;help(function)
[3] 熟悉防御式编程,使用try...except...;
当然exception的类型需要自己去了解。
(4)需要进一步继续学习和了解
迭代器:生成器(Generator),可通过next()调用;定义时包含yeild: a 输出a ,并保存a的状态。
继承和函数装饰器:一个允许在已有
类上进行更改和丰富类的属性;装饰器为函数添加附加功能,并不修改源码以及调用方式。
2.python爬虫相关知识复习
(1)基础了解性知识
URI 分为url 和urn 两种, 比较常用的是url,因此广为熟知。
HTTP//HTTPS : 区别加入了SSL层(CA证书认证)**牛逼的特例 12306。
网页的组成
HTML: 网页的骨架(内容与结构) tag 通过标签的不同排序和嵌套
CSS: 皮肤(布局) 层叠样式表 目前唯一的网页排版样式 (# .)
Javascript:肌肉(行为) 脚本语言 页面的交互和动态效果
spider: 获取网页 => 提取信息 => 保存数据 => 自动化程序(快速获取大量数据)
为了保持HTTP的链接状态: cookies 和会话技术;cookies保存在用户本地,是网站用于用户身份识别的标识,会话是服务器端用来存储特定用户会话的属性以及配置信息,会话终止和过期之前一直有效。
(2)基本库的使用(urllib//requests)
A.Urilib库
urllib : python3中已将urllib库进行了整合,统一为urllib,主要有四个模块:
request:HTTP 请求模块
error: 异常处理
parse: 工具模块,熟知的有urllib.parse.unicode(); 包括拆分,解析,合并
robotparser: 识别网站robots.txt文件
(1) request:HTTP 请求模块
[1] .urlopen()
urllib.request.urlopen(url, data=None, [timeout=]*, cafile=None, capath=None, cadefault=False, context=None)
[2]Request:构造请求
urllib.request.Request(url, data= None, headers={}, origin_req_host=None, unverfiable=False, method=None)
[3]高级用法: cookie 和 proxy 代理设置
强大的Handler,可以构造各种处理器,如专门登陆验证,cookies,proxy代理;
*** urllib.request模块里的BaseHandler类,所有Handler的父类提供最基本的方法,如default_open(), protocol_request()等
常用的有:
HTTPDefaultErrorHandler: HTTP响应错误 #
HTTPRedirectHandler: 重定向 #
HTTPCookieProcessor: cookies
ProxyHandler: proxy代理
HTTPPasswordMfr: 管理密码
HTTPBasicAuthHandler: 管理认证,链接的认证
(2)error: 异常处理
URLError: 继承于OSError,是request模块异常的基类(包含最广的) ,具有 .reason(属性); HTTPError: URLError的子类,用于捕获HTTP 请求错误
(3)parse: 工具模块,熟知的有urllib.parse.unicode(); 包括拆分,解析,合并
(4)robotparser: 识别网站robots.txt文件 ;判断爬虫是否有权限爬取此网页
B.requests库
(1).get()
req = requests.get(url, params={}, headers={}, proxies={} ,)
req.text; req.content; req.status_code, req.cookies
(2) post() 上传文件
file = {}
r = requests.post(url, file=files)
(3) .session() 会话维持
s = requests.session()
req = s.get(url,...)
(4) SSL证书认证
a. 参数设置varify=False, 忽略证书错误;
b. 加载本地证书: 参数设置, cert=("server.crt路径", "key路径")
(5) 代理设置
proxies ={"http":"http://user:password@host:port", }
(6) 超时设置 timeout=
(7) 身份认证
(8) Prepared Request
urllib库可同通过 urllib.request.Request(url) => request请求 => reponse = urllib.rquest.urlopen(rquest)
同样: requests库同样支持,
from requests import Request, session
url = " "
s = session()
req = Request("post", url, data=data, headers=headers)
prepped = s.prepped_request(req)
r = s.send(prepped)
网友评论