使用post请求:
用法:
response = requests.post(url, data = data, headers=headers)
data形式:字典
确定请求参数,查看Network:
显示移动端需要切换:
处理响应,需要导入json模块
代理使用:
## 正反代理区别:
## 用法:
requests.get(“http://www.baidu.com”, proxies = proxies)
## proxies形式:字典
## 代理ip分类:
a. 透明代理:可以直接‘隐藏’ip地址,但还是可以查到你是谁
b. 匿名代理:别人只能知道你用了代理,不知道你是谁
c. 高匿代理:别人根本无法发现你是在使用代理
## 使用代理ip的注意点:
反反爬:
使用代理ip是非常必要的一种反反爬的方式
但是即使使用了代理ip,对方服务器任然会有很多的方式来检测我们是否是一个爬虫,比如:
一段时间内,检测IP访问的频率,访问太多频繁会屏蔽
检查Cookie,User-Agent,Referer等header参数,若没有则屏蔽
服务方购买所有代理提供商,加入到反爬虫数据库里,若检测是代理则屏蔽
所以更好的方式在使用代理ip的时候使用随机的方式进行选择使用,不要每次都用一个代理ip
代理ip池的更新:
购买的代理ip很多时候大部分(超过60%)可能都没办法使用,这个时候就需要通过程序去检测哪些可用,把不能用的删除掉。
爬虫中使用cookie
## 利弊:
- 带上cookie的好处:
能够访问登录后的页面
能够实现部分反反爬
2. 带上cookie的坏处:
一套cookie往往对应的是一个用户的信息,请求太频繁有更大的可能性被对方识别为爬虫
requests处理cookie的方法:
cookie字符串放在headers中
把cookie字典放传给请求方法的cookies参数接收
使用requests提供的session模块
cookie添加在heades中:
## headers中的cookie:
使用分号(;)隔开
分号两边的类似a=b形式的表示一条cookie
a=b中,a表示键(name),b表示值(value)
在headers中仅仅使用了cookie的name和value#
## 使用方法:
requests.get(url,headers=headers,cookies=cookie_dict}
使用requests.session处理cookie
session的会话保持:
保存cookie,下一次请求会带上前一次的cookie
实现和服务端的长连接,加快请求速度
## 使用方法:
session = requests.session()
response = session.get(url,headers)
注:session实例在请求了一个网站后,对方服务器设置在本地的cookie会保存在session中,下一次再使用session请求对方服务器的时候,会带上前一次的cookie
requests中cookirJar的处理方法
## 方法介绍:
response.cookies是CookieJar类型
使用requests.utils.dict_from_cookiejar,能够实现把cookiejar对象转化为字典
## requests处理证书错误(解决方法):
##超时参数使用:
response = requests.get(url,timeout=3)
retrying模块使用
## retrying模块的地址:https://pypi.org/project/retrying/
## retrying 模块的使用:
使用retrying模块提供的retry模块
通过装饰器的方式使用,让被装饰的函数反复执行
retry中可以传入参数stop_max_attempt_number,让函数报错后继续重新执行,达到最大执行次数的上限,如果每次都报错,整个函数报错,如果中间有一个成功,程序继续往后执行
(了解)urllib的基本方法介绍
# # 传入url地址:
## urllibr. request:
1. 构造简单请求
2. 传入headers参数
3. 传入data参数 实现发送post请求
## response.read()