网络爬虫学习笔记
课程名称:52讲学爬虫
1.4 Session & Cookies
HTTP无状态:HTTP协议没有记忆能力,无法了解登录状态
Session在服务端,本身含义指一段有始有终的一系列动作或消息。WEB中,Session对象用来存储特定用户所需的Session属性及配置信息
Cookies在客户端,为了辨别用户身份,进行Session跟踪
如何使用:客户端第一次请求服务器时,服务器返回相应头中带有Set-Cookie
字段,客户端将数据保存。浏览器下次请求时,将Cookie放在请求头进行请求
Cookie如何查看:在开发者选项-> Application-> Cookies
中查看
1.5&1.6 多线程 & 多进程
爬虫为I/O密集型任务,可以使用多线程
加锁保护:线程操作数据前加锁,如果数据被加锁,那么其他线程无法继续向下执行,释放锁以后才可以继续。
由于python GIL (Global Interpreter Lock)全局解释器锁,python多线程下:获取GIL->执行代码->释放GIL,因此python无法实现多核运算。
多进程无法共享全局变量。需要通过管道实现。
多进程主要使用:multiprocessing
类实现
后续带代码实现。
1.7 Request库
请求测试网址:http://httpbin.org
GET方法传入参数用params
requests.get(url,params:,headers)
POST方法传入参数用data
requests.post(url,data:)
requests库内置到查询状态码方法:requests.code
高级用法:
文件上传
1 | import requests |
获取Set_Cookies
1 | r = requests.get('http://www.baidu.com') |
维持Session,使用Session对象
1 | s = request.Session() |
SSL证书验证
使用verify
参数控制是否验证证书,False
则可以不验证证书进行访问,但是会有警告,以下两种方式取消警告
1 | #设置忽略警告方式屏蔽警告 |
1 | #通过捕获到日志方式忽略警告 |
或者指定本地证书座位客户端证书
1 | import requests |
超时设置
使用timeout
参数
1 | r = requests.get(url, timeout=1) |
timeout
分为连接和读取,可以使用元组分割:timeout=(5,5)
身份认证(弹窗输入用户名密码)
1 | import requests |
可以简化为元组r = requests.get(url, auth=('admin','0000'))
还可以使用OAuth认证,但需要安装oauth认证包
代理设置
使用proxies
参数
1 | import requests |
1 | #代理需要身份验证 |
Prepared Request对象
Request对象实例化,方便操做
1 | from requests import Request,Session |