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显式抛出的异 ...
随机推荐
- 洛谷 P2018 消息传递
题目分析 贪心+树形DP 本来还以为要大费周折地换根,然后发现 \(n\) 很小,可以直接 \(O(n^2\log n)\) 枚举. 枚举每个节点作为根,用 \(f_x\) 表示走完以 \(x\) 为 ...
- 基于FFmpeg的Dxva2硬解码及Direct3D显示(二)
解析视频源 目录 解析视频源 获取视频流 解析视频流 说明:这篇博文分为"获取视频流"和"解析视频流"两个部分,使用的是FFmpeg4.1的版本,与网上流传的低 ...
- ceph osd tree的可视化
前言 很久没有处理很大的集群,在接触一个新集群的时候,如果集群足够大,需要比较长的时间才能去理解这个集群的结构,而直接去看ceph osd tree的结果,当然是可以的,这里是把osd tree的结构 ...
- linux系统克隆系统盘
本文将介绍两种方式的系统盘的完整的备份,两种方式各有优缺点,需要根据实际情况来进行选择 使用dd的完整镜像克隆的方式 使用tar去备份数据,安装grub的方式 dd方式 优点: 简单,一条命令 dd ...
- Python_selenium案例:
selenium案例 #coding=utf-8 #select下拉框处理 from selenium import webdriver from selenium.webdriver.common. ...
- python request 请求https报错问题
旁边大佬让我重新写一个某XX监控脚本 需要请求https遇到了如下的问题 花了一下午解决这个问题... 害太菜,.... 遇到的问题: requests.post 发送https请求的时候 ...
- 面试官:就问个Spring容器初始化和Bean对象的创建,你讲一小时了
前言 spring作为一个容器,可以管理对象的生命周期.对象与对象之间的依赖关系.可以通过配置文件,来定义对象,以及设置其与其他对象的依赖关系. main测试类 public static void ...
- 总是说spring难学?来看完这些spring的注解及其解释,真香!
前言 用过spring的人都知道,spring简单的通过注解就可以完成很多事情,但这些东西是如何实现的呢以及如何应用到我们自己的代码中?接下来,让我们一起开启注解的旅程. 1. @Controller ...
- BT下载器Folx中删除任务与删除文件的功能区别
当用户使用Folx完成了任务下载后,该任务仍会保留在下载列表中,并标注"已结束"的标记.随着使用时间的增长,Folx下载列表中会包含过多的"已结束"任务,用户需 ...
- 电子邮件怎么用EasyRecovery恢复,只需简单5步
在日常工作中,我们常常会用电子邮件与上事.客户等协商工作事务.电子邮件快捷.方便,慢慢地成为我们工作中不可缺少的沟通工具之一. 然而使用的过程中,你会发现垃圾邮件也越积越多了,平时,我看到积压的垃圾邮 ...