利用urlopen( )方法可以实现最基本请求的发起,如果请求中需要加入Headers等信息,就可以利用request模块下的Request类构造http请求对象。其构造方法如下:

class urllib.request.Request(url, data=None, headers={ }, origin_req_host=None,unverifiable=False, method=None)

第一个参数url用于请求URL,这是必传参数,其他都是可选参数。

第二个参数data如果要传,必须传bytes(字节流)类型的。如果它是字典,可以先用urllib.parse模块里的urlencode( )编码。

第三个参数headers是一个字典,它就是请求头,我们可以在构造请求时通过headers参数直接构造,也可以通过调用请求示例的add_header( )方法添加。添加请求头最常用的用法就是通过修改User-Agent来伪装浏览器。比如要伪装火狐浏览器,我们可以把它设置为:

Mozilla/5.0(X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11

第四个参数origin_req_host指的是请求方的host名称或者IP地址。

第五个参数unverifiable表示这个请求是无法验证的,默认是False,意思就是说用户没有足够的权限来选择接收这个请求的结果。例如,我们请求一个HTML文档中的图片,但是我们没有自动抓取图像的权限,这时unverifiable的值就是True。

第六个参数method是一个字符串,用来指示请求使用的方法,比如GET、POST和PUT等。

from urllib import request
req=request.Request('http://www.douban.com/')#构造Request 对象,只传入url参数
req.add_header('User-Agent','Mozilla/6.0(iPhone;CPU iPhone OS 8_0 like Mac OS X) AppleWebkit/536.26 (KHTML,like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25')
with request.urlopen(req) as f:print('Status:',f.status,f.reason)for k,v in f.getheaders():print('%s:%s'%(k,v))print('Data:',f.read().decode('utf-8'))

参考资料:
Request对象详细构造方法:https://baijiahao.baidu.com/s?id=1624323173955549442&wfr=spider&for=pc

python 构造http请求对象-Request对象相关推荐

  1. python arp_用Python构造ARP请求、扫描、欺骗

    0. ARP介绍 首先,先回忆下TCP/IP模型,从下到上分为:数据链路层.网络层.传输层.应用层,那么ARP到底属于哪一层?有人会说是网络层,但实际是属于数据链路层,只不过还要为网络层提供服务. A ...

  2. jsp内置对象--request对象

    request对象 客户端的请求信息被封装在request对象中,通过它才能了解客户的需求,然后做出响应,他是HttpServletRequset类的实例request对象具有请求域,即完成客户的请求 ...

  3. python发post请求json_python request 以json形式发送post请求的正确的姿势

    一个http请求包括三个部分,为别为请求行,请求报头,消息主体,类似以下这样: 请求行,请求报头,消息主题. 以json串提交数据,编码格式: application/json, 必须加上 impor ...

  4. python构造http请求_Python实现简单的HTTP请求发送详解

    代码如下 import socket def clean_host(host): """Remove leading http:// and trailing /path ...

  5. python 构造 whois 请求

    whois报文请求 再也简单不过了: from socket import *HOST = '202.12.29.220' PORT = 43 BUFSIZ = 1024 ADDR = (HOST, ...

  6. Flask框架(flask中的request对象,获取请求参数,保存上传的文件)

    1.request中包含了前端发送过来的所有数据 ,请求的 request 对象中保存了一次HTTP请求的一切信息. 通过request.from可以直接发送提取请求体中的表单格式数据,是一个类字典的 ...

  7. Javaweb-Servlet总结(概述、接口使用、配置、获取请求方式、路径操作、Request对象、Response对象)

    文章目录 Servlet概述 Servlet核心接口和类 三种自定义Servlet接口的方法 1.实现Servlet接口 2.继承GenericServlet抽象类 3.继承HttpServlet抽象 ...

  8. Spring学习总结(28)——Spring获取request对象的几种方法及线程安全性总结

    分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程 前言 在使用Spring MVC开发Web系统时,经常需要在处理请求时使用reque ...

  9. request 对象和 response 对象

    Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象 HttpServletResponse HttpServletR ...

  10. rest post无法取到request_小白学Flask第五天 | 详解很重要的request对象

    点击蓝色字关注我们! 一个正在努力变强的公众号 本文内容: request的form_data_args用法 上传文件 request的form.data.args用法 from flask impo ...

最新文章

  1. 《英语语法新思维初级教程》学习笔记(一)名词短语
  2. android SDK manager 无法获取更新版本列表
  3. CodedInputStream encountered an embedded string or message which claimed to have negative size.
  4. Android 数据库制作APP,在Android 中使用Anko框架制作一个完整的App,第二集
  5. 靠谱的div引入任何外链内容
  6. 馀承东发布鸿蒙,鸿蒙系统一无是处?鸿蒙有何优势?
  7. 操作系统之计算机系统概述:7、操作系统的体系结构
  8. java window的对象方法,[Java教程]如何真正重写window对象的方法_星空网
  9. api 二次 开发 禅道_VBA SolidWorks 二次开发 API ---从宏开始
  10. UVALive 3135--Argus+自己定义优先队列的优先规则
  11. TeamViewer 远程设备的画面黑屏怎么办?
  12. spark读取gz文件与parquet文件
  13. MapReducer随笔小记
  14. netstat 的详解
  15. python国际象棋的价值_python – 国际象棋negamax功能
  16. 魅族4usb计算机连接,魅族MX4手机如何连接电脑
  17. 方便的电商历史价格查询网站asd-price,只需三个字母
  18. win7电脑怎么伪装ip地址【系统天地】
  19. [ Laravel 5.5 文档 ] 快速入门 —— 使用 Laragon 在 Windows 中搭建 Laravel 开发环境
  20. HDUOJ 6441 Find Integer

热门文章

  1. Fragment中获取Activity的Context
  2. 对代码更有信心--单元测试工具Mockito简单介绍
  3. 大华管理平台用户名_助力制造苏州紫光云引擎携手大华精密,共建精密机加数字化样板工厂...
  4. phpstorm配置ftp,自动更新代码
  5. wordpress无法上传中文名的图片
  6. Linux报文硬件时间戳,linux 时间戳,打戳代码分析,用于PTP报文协议(示例代码)...
  7. 小米6 twrp_小米手机刷国际版欧版 MIUI 的详细教程
  8. win7副本不是正版_征途正版官网版下载-征途正版手游官网版下载1.0
  9. 单元覆盖测试排除某些类烧苗_汽车嵌入式软件测试——嵌入式软件测试概述
  10. 省赛第七场(fzu1881 ~fzu1889)