一.requests 模拟登录的三种方法
1.发送 post 请求 模拟登录
1. 利用抓包 获取 post登录 url, 以及登录时的 form 表单 难度较大
2.将 form 表单中的数据封装成一个字典 , data={ 'a': '1' , 'b': '2' } 的形式
3.requests .post( url,data=data ) post登录
2.利用cookie字段 直接获取指定页面
利用抓包工具获取登录后页面的cookie字符串 利用字典推导式 将它转换为 字典
cookie_str='td_cookie=184467440760818981; username=20163229; JSESSIONID=3855910A612495830AF74A7D'
cookie_dic={i.split('=')[0]:i.split('=')[1] for i in cookie_str.split('; ')}
requests.get(url , cookies= cookie_dic )
但是直接利用 requests .get(url ,cookies= cookie_str ) 也能成功
3.将cookie放在headers中
headers={
'Cookie' : 'td_cookie=184467440720608981; username=0163229; JSESSIONID=3855910A61F34A7D'}
requests .get (url ,headers=headers ) 获取指定页面
二.编码问题
1.response.encoding() 根据响应头拿取的 如果没有默认为ISO-8859-1编码
2.response.apparent_encoding() 根据内容猜测的编码 较准确
3.response.raise_for_status() 请求不成功时(200 )抛出HTTPERROR异常
4. GB2312,由中华人民共和国政府制定的,简体汉字编码规范与此对应的还有BIG5,是中华民国政府制定的,繁体汉字的编码规范
5.GBK,又称GBK大字符集,包括简体中文,繁体中文,日语,韩语等,都使用 一种格式编码,兼容所有平台的上的语言。GBK大字符集包含的汉字数量比GB2312和BIG5多,使得汉字兼容足够使用。
三.requests中的session , cookiejar
一.1.session=requests.session() 2.session.headers={}设置session 请求头 3. response=session.get( url=ur)
4.获取cookies session.cookies
二. response=requests.get(url)
cookie_jar= response.request. _cookies 此时 cookiejar 是一个对象
cookies_dic=requests.utils.dict_from_cookiejar(cookie_jar) 将cookiejar对象转换为字典