requests的再次学习
title: requests模块的再次理解
date: 2020-03-10 22:44:26
tags:
1、response的解析
当requests模块发送请求后,我们会对其响应的数据也就是response进行解析,解析的方式有两种。
response.text
- 该方法返回的是str。
- 该方法的默认解码方式是'ISO-8859-1'。
- 想要更改解码方式,需要设置response的解码方式,如response.encoding = 'uft-8'
response.content
- 该方法返回的是二进制。
- 该内容解码使用decode()方法即可。
- decode()方法默认是“uft-8”。
- 使用其他方式解码只需要传入相关的名称即可,例如:decode("gbk")。
当然,这些方法首先推荐的是:
1、response.content.decode()
2、response.content.decode("gbk")
3、response.encoding = 'uft-8'
response.text
这几个方式可以解决绝大部分的乱码问题。
2、模拟登陆
有些网站需要登录后才能查看相关的内容,那么就需要我们在爬取网页内容时进行模拟登陆。
模拟登陆有两个方式可以实现:
1、使用session发送post请求登陆,登陆之后再发送get请求即可。
基本模板:
# coding=utf-8
import requests
session = requests.session()
#需要根据不同的网站来写
post_url = "请求的url地址"
post_data = {"username":"账号..."}
session.post(post_url,data=post_data)
#之后session就带了cookie,再次发送get请求就能
get_url = ""
response = session.get(get_url)
2、自己手动登陆后会有一个cookie,在发送请求时在请求头中带上这个cookie即可。
模板:
# coding=utf-8
import requests
headers = {"user-agent":"xxx","cookie":"xxx"}
get_url = ""
response = requests.get(get_url,headers)
其实此处也可以将cookie单独拿出来,放入一个字典中,get中有cookie参数,可以再那里传入,但是不太方便,还需要将cookie中的键值对一个个放入。
3、使用代理
这个就不用多说了,要注意的是如果访问http地址,就需要可以访问http的代理,https同理。
# coding=utf-8
import requests
headers = {"user-agent":"xxx","cookie":"xxx"}
get_url = ""
# 后方是个端口号
proxy = {"http":"http://123.54.67.48:80"}
response = requests.get(get_url,headers = headers,proxies = proxy)
(不知道为何pycharm代码提示不提示proxies!-_-||||)
requests的再次学习的更多相关文章
- 再次学习mysql优化
再次学习mysql优化 表的设计规范化(三范式) 添加索引(普通索引.主键索引.唯一索引.全文索引) 分表(水平分割.垂直分割) 读写分离(写add.update.delete) 存储过程 对mysq ...
- 从0开始学爬虫9之requests库的学习之环境搭建
从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...
- 再次学习 java 类的编译
做JAVA开发的都知道myeclipse, 我们在myeclipse中新建一个类,然后保存, 如何正常的话,那么在项目指定的目录(也就是项目的output目录)就会生成同名的class文件, 可是,我 ...
- 再次学习C++类之构造函数
学习C++类,首先要说C中的结构体,虽然C++类扩展了C中的结构体,可以添加成员函数,但他们是有区别的.在结构体中,成员变量.成员函数都是公有的,而类中,一般是成员变量是私有的,成员函数是公有的,私有 ...
- Linux传统Huge Pages与Transparent Huge Pages再次学习总结
Linux下的大页分为两种类型:标准大页(Huge Pages)和透明大页(Transparent Huge Pages).Huge Pages有时候也翻译成大页/标准大页/传统大页,它们都是Hu ...
- requests 进阶用法学习(文件上传、cookies设置、代理设置)
一.文件上传 1.模拟网站提交文件 提交此图片,图片名称:timg.jpg import requests files={ 'file':open('timg.jpg','rb') } respons ...
- 再次学习linux文件特殊权限:SUID、SGID、Sticy Bit
以前对于文件管理的认识只限于UGO的管理,对于特殊权限的学习还是一知半解.重新学习了一遍,我自己理解的东东记录一下. 首先,列一下SUID.SGID.Sticy Bit所代表的权限数值.就好像rwx分 ...
- requests库的学习——跟随官方文档
发送GET请求: import requests r=requests.get("http://www.kekenet.com/") 如果需要传递参数可以有以下几种方法: impo ...
- Requests的基础学习
官方文档链接:http://cn.python-requests.org/zh_CN/latest/ 安装: pip install requests 错误异常: 1.所有Requests显式抛出的异 ...
随机推荐
- 这些C++基础知识的基础知识你都学会了吗?
一.C++基础知识 新的数据类型 C语言中的数据类型 C++中新的数据类型 思考:新的数据类型有什么好处?请看下面的代码: 可以见得:新的类型使整个程序更加简洁,程序变得易读易懂!这个就是bool ...
- php判断用户设备类型
最近做的一个需求里面希望能判断用户访问页面的设备类型,根据不同的类型去加载不同的数据和页面样式.由于技术栈是使用的php,于是考虑在php层面去做这个判断. 假设主要判断的设备有平板和手机为主,分两个 ...
- CodeChef-RNDRATIO Mysterious Ratio 题解
CodeChef-RNDRATIO Mysterious Ratio 题意简述: 对每个 \(1 \le i \le n\) ,随机选择一个数 \(A_i\) ,满足 \(L_i \le A_i \l ...
- fork()系统调用后,对于open()前后父子进程的访问
一开始我也不是很懂,后来看了一篇别人的博客觉得写得特别好,现在拷贝下来分享一下. 如果换成write函数 如果换成write函数,先open()后fork(),那么父子进程共享文件描述符,即使在子进程 ...
- 查找数组中第k大的数
问题: 查找出一给定数组中第k大的数.例如[3,2,7,1,8,9,6,5,4],第1大的数是9,第2大的数是8-- 思考:1. 直接从大到小排序,排好序后,第k大的数就是arr[k-1]. 2. ...
- const常量与define宏定义的区别(转)
#define RADIUS 100; const float RADIUS = 100; (1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. ( ...
- 网络协议_7层_TCP/IP
- 你了解JWT吗?
1. 什么是JWT JWT简称 JSON Web Token,也就是通过 JSON 形式作为 Web 应用中的令牌,用于在各方之间安全地将信息作为 JSON 对象传输.在数据传输过程中还可以完成数据加 ...
- vue 常见记录
# vuex在组件中如何获取vuex的state对象中的属性 https://blog.csdn.net/gavincz/article/details/81049461 # vuex全局变量使用 h ...
- ssh 方面问题总结
ssh 远程执行命令: https://www.cnblogs.com/youngerger/p/9104144.html ssh免密登录: https://blog.csdn.net/jeikerx ...