第一种方法 请求头中加入网页复制的cookie来维持登录状态
实战之以QQ空间为例来说明
如何在网页中获取cookie 首先登录QQ空间 将Headers中的cookie内容复制即可
import requests
headers {
cookie : 此处换为你自己的cookie即可 ,
user-agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36
r requests.get( https://user.qzone.qq.com/这里写上要登录的QQ号/infocenter , headers headers)
print(r.text)
我们发现 结果中包含了登录后的结果 说明我们登录成功
第二种方法 通过cookies参数来设置 直接将cookies构造字典传入即可
8 设置代理proxies什么是代理
代理IP是一个ip ,指的是一个代理服务器。
要晓得正向代理和反向代理是啥
知不知道服务器的地址做为判断标准 知道就是正向代理 不知道就是反向代理。
3. 代理ip的分类 常见有两大分类依据 匿名度 协议
①匿名度
透明代理 目标服务器可以通过代理找到你的ip
匿名代理 两者之间
高匿代理 在爬虫中经常使用 目标服务器无法获取你的ip。
②协议 根据网站使用的协议不同 需要使用响应的协议代理服务
http代理 目标的url为http协议
https代理 目标url为https协议
socks代理 只是简单的传递数据包 不关心是何种协议 比http和HTTPS代理消耗小 可以转发http和https的请求。
为何使用代理
1 让服务器以为不是同一个客户端在请求
2 防止我们的真实地址被泄露 防止被追究。
用法
当我们需要使用代理时 同样构造代理字典 传递给proxies参数。
在网络请求中 我们常常会遇到状态码是3开头的重定向问题 在Requests中是默认开启允许重定向的 即遇到重定向时 会自动继续访问。
有时候我们使用了抓包工具 这个时候由于抓包工具提供的证书并不是由受信任的数字证书颁发机构颁发的 比如 之前12306的整数就没有被官方CA机构信任 就会出现证书验证错误的结果 所以证书的验证会失败 这时我们就需要关闭证书验证。
解决方法 在请求的时候把verify参数设置为False就可以关闭证书验证了。
小拓展
但是关闭验证后 会有一个比较烦人的warning 它建议我们给它指定证书。我们可以通过设置忽略警告的方式来屏蔽它
为了防止服务器不能及时响应 而设置一个超时时间 即超过了这个时间还没有得到响应 那就报错
设置访问超时——设置timeout参数即可。 这个时间的计算是发出请求到服务器返回响应的时间
实际上 请求分为两个阶段 即连接 connect 和读取 read 。下面设置的timeout将用作连接和读取这二者的timeout总合。如果分别指定 就可以传入一个元组 timeout (5,11,30)。
①代码讲解
import requests
from retrying import retry
headers { User-Agent : Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.3 }
retry(stop_max_attempt_number 3) # stop_max_attempt_number 3最大执行3次 还不成功就报错
def _parse_url(url): # 前面加_代表此函数 其他地方不可调用
print( * *100)
response requests.get(url, headers headers, timeout 3) # timeout 3超时参数 3s内
assert response.status_code 200 # assert断言 此处断言状态码是200 不是则报错
return response.content.decode()


