response.text 返回的是一个 unicode 型的文本数据
response.content 返回的是 bytes 型的二进制数据
为什么请求需要带上header?
模拟浏览器,欺骗服务器,获取和浏览器一致的内容
header的形式:字典
用法:requests.get(url,headers = headers)
什么叫做请求参数:
https://www.baidu.com/s?wd=python&c=b
参数的形式:字典
kw = {'wd':'长城'}
用法:requests.get(url,params=kw)
url编码
https://www.baidu.com/s?wd=%E8%BF%AA%E4%B8%BD%E7%83%AD%E5%B7%B4
发送POST请求
用法:response = requests.post('http://www.baidu.com/',data=data,headers=headers
data的形式:字典
使用代理
用法: requests.get("http://www.baidu.com",proxies=proxies)
proxies的形式:字典
proxies={
”http”:”http://12.34.56.79:9527”,
"https":”https://12.34.56.79:9527”,
}
使用代理
问题:为什么爬虫需要使用代理?
1.让服务器以为不是同一个客户端在请求
2.防止我们的真实地址被泄露,防止被追究
检测ip的可用性
准备一堆ip地址,组成ip池,随机选择一个ip来使用
如何随机选择代理ip,让使用次数较少的ip地址有更大的可用行被用到
{”ip”:ip,”times”:0}
[{},{},{},{}],对这个ip的列表进行排序,按照使用次数进行排序
选择使用次数较少的10个ip,从中随机选择一个
检测ip的可用性
可以使用requests添加超时参数,判断ip地址的质量
在线代理ip质量检测的网站
携带cookie请求
携带一堆cookie进行请求,把cookie组成cookie池
使用requests提供的session类来请求登录之后的网站的思路
实例化session
先使用session发送请求,登录对网站,把cookie保存在session中
再使用session请求登录之后才能访问的网站,session能够自动的携带登录成功是保存在期中的cookie,进行请求