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的再次学习的更多相关文章

  1. 再次学习mysql优化

    再次学习mysql优化 表的设计规范化(三范式) 添加索引(普通索引.主键索引.唯一索引.全文索引) 分表(水平分割.垂直分割) 读写分离(写add.update.delete) 存储过程 对mysq ...

  2. 从0开始学爬虫9之requests库的学习之环境搭建

    从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...

  3. 再次学习 java 类的编译

    做JAVA开发的都知道myeclipse, 我们在myeclipse中新建一个类,然后保存, 如何正常的话,那么在项目指定的目录(也就是项目的output目录)就会生成同名的class文件, 可是,我 ...

  4. 再次学习C++类之构造函数

    学习C++类,首先要说C中的结构体,虽然C++类扩展了C中的结构体,可以添加成员函数,但他们是有区别的.在结构体中,成员变量.成员函数都是公有的,而类中,一般是成员变量是私有的,成员函数是公有的,私有 ...

  5. Linux传统Huge Pages与Transparent Huge Pages再次学习总结

      Linux下的大页分为两种类型:标准大页(Huge Pages)和透明大页(Transparent Huge Pages).Huge Pages有时候也翻译成大页/标准大页/传统大页,它们都是Hu ...

  6. requests 进阶用法学习(文件上传、cookies设置、代理设置)

    一.文件上传 1.模拟网站提交文件 提交此图片,图片名称:timg.jpg import requests files={ 'file':open('timg.jpg','rb') } respons ...

  7. 再次学习linux文件特殊权限:SUID、SGID、Sticy Bit

    以前对于文件管理的认识只限于UGO的管理,对于特殊权限的学习还是一知半解.重新学习了一遍,我自己理解的东东记录一下. 首先,列一下SUID.SGID.Sticy Bit所代表的权限数值.就好像rwx分 ...

  8. requests库的学习——跟随官方文档

    发送GET请求: import requests r=requests.get("http://www.kekenet.com/") 如果需要传递参数可以有以下几种方法: impo ...

  9. Requests的基础学习

    官方文档链接:http://cn.python-requests.org/zh_CN/latest/ 安装: pip install requests 错误异常: 1.所有Requests显式抛出的异 ...

随机推荐

  1. 01 . Vue简介,原理,环境安装

    简介 vue是一个JavaMVVM库,是一套用于构建用户界面的渐进式框架,是初创项目的首选前端框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计.它是轻量级的,它有很多独立的功能或库 ...

  2. cmd 命令行

    理想的情况下,所有的程序都能自描述, 比如 mysql -h,支持哪些命令,每项命令需要哪些参数 命令行工具有几个有关进程的命令, tasklist taskkill http://hi.baidu. ...

  3. minishell的实现

    直接上各个模块的代码,注释都在文档代码中,非常详细,加上最后的Makefile文件完全可以自行运行看懂: main函数一个文件main.c 1 /* 2 minishell实现的功能:简单命令解析.管 ...

  4. fcntl函数用法——复制文件描述符

    文件描述符复制和输出重定向dup() 用最小的文件描述符来复制,从0开始搜素.复制文件描述符后,最小文件描述符指向被复制描述符指向的文件.dup2(int oldfd,int newfd) 强制用ne ...

  5. 11.java设计模式之享元模式

    基本需求: 小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同 每个客户要求发布的方式不一样,A要求以新闻的方式发布,B要求以博客的方 ...

  6. asyncio多进程+pyppeteer浏览器控制+pyquery解析实现爬虫demo

    import asyncio from pyppeteer import launch from pyquery import PyQuery as pq async def main(): brow ...

  7. Spark3.0.1各种集群模式搭建

    对于spark前来围观的小伙伴应该都有所了解,也是现在比较流行的计算框架,基本上是有点规模的公司标配,所以如果有时间也可以补一下短板. 简单来说Spark作为准实时大数据计算引擎,Spark的运行需要 ...

  8. 统计数字问题(Java)

    Description 一本书的页码从自然数1 开始顺序编码直到自然数n.书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0.例如,第6 页用数字6 表示,而不是06 或006 等.数字计数问 ...

  9. 13.java设计模式之模板模式

    基本需求: 制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 通过添加不同的配料,可以制作出不同口味的豆浆 选材.浸泡和放到豆浆机打碎这几个步骤对于制作每种口味 ...

  10. 安装了向日葵或TeamViewer导致系统亮度无法调节

    1.向日葵 安装向日葵造成无法调节亮度的原因:可能为了使用向日葵的黑屏模式功能,误装了向日葵的驱动.建议不要使用该功能. 关于安装向日葵的用户,请参考以下步骤解决: 请保持电脑处于联网状态,并关闭了向 ...