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显式抛出的异 ...
随机推荐
- 解决IE9弹出json下载提示框
<!-- 开启注解 --> <mvc:annotation-driven> <mvc:message-converters> <bean class=&quo ...
- 【转】linux自测题
一.填空题: 1. 在Linux系统中,以 文件 方式访问设备. 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统. 3. Linux文件系统中每个文件用 i节点 来标 ...
- 全文思维导图------redis设计与实现
- linux之HTTP服务
1.基本的配置 httpd:俗称Apache (A pachey Server) /etc/httpd/conf/httpd.conf #配置文件 /etc/httpd/co ...
- (3)ElasticSearch在linux环境中安装与配置head插件
1.简介 ElasticSearch-Head跟Kibana一样也是一个针对ElasticSearch集群操作的API的可视化管理工具,它提供了集群管理.数据可视化.增删改查.查询语句等功能,最重要还 ...
- 4.Spring Boot web开发
1.创建一个web模块 (1).创建SpringBoot应用,选中我们需要的模块: (2).SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来 (3).自己编 ...
- SpringBoot加载配置文件的几种方式
首先回忆一下在没有使用SpringBoot之前也就是传统的spring项目中是如何读取配置文件,通过I/O流读取指定路径的配置文件,然后再去获取指定的配置信息. 传统项目读取配置方式 读取xml配置文 ...
- 掌握这些springboot的配置方式,让你工作效率翻个倍!
springboot的多种配置方式 java配置主要靠java类和一些注解,比较常用的注解有: @Configuration :声明一个类作为配置类,代替xml文件 @Bean :声明在方法上,将方法 ...
- 面试官:小伙子,你给我说一下Java中什么情况会导致内存泄漏呢?
概念 内存泄露:指程序中动态分配内存给一些临时对象,但对象不会被GC回收,它始终占用内存,被分配的对象可达但已无用.即无用对象持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间浪费. 可达 ...
- 如何使用OCR编辑器检查和识别文本
ABBYY FineReader 15(Windows系统)中的OCR编辑器能帮助用户对扫描仪或者数码相机获取的图像文件进行自动文本识别,OCR区域绘制等,使这些图像文件能进一步转换为可编辑的格式.其 ...