使用 urllib 构造请求对象

(1) urllib.request.urlopen()方法可以实现最基本请求的发起,但这几个简单的参数并不足以构建一个完整的请求
(2) 我们可以使用 urllib.request.Request() 先构造一个请求对象,这个请求对象可以包含请求头信息,或者包含要向服务器传递的数据,然后再发送请求
(3) 语法:urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False,method=None)
(4) 其中 url 是要请求的URL,这是必传参数,其他都是可选参数;data 是要向服务器传递的数据,headers 用来构造请求头信息,method 用来指定请求方法

import urllib.parse
import urllib.request

url = "http://www.baidu.com/"

headers = {    //定义请求头信息,通常只定义 User-Agent,其他请求头信息可以通过 F12 界面查看
    ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36‘,
}

postdata = {   //定义要向服务器传递的数据
    ‘wd‘: ‘hello‘,
}

data = bytes(urllib.parse.urlencode(postdata), encoding=‘utf8‘)                     //把要传递的数据转换成字节流编码格式
request = urllib.request.Request(url, data=data, headers=headers, method=‘POST‘)    //构造一个请求对象,指定使用POST方式发起请求
response = urllib.request.urlopen(request)                                          //最后再使用urlopen()发送请求对象
print(response.read().decode(‘utf-8‘))

原文地址:https://www.cnblogs.com/pzk7788/p/10531011.html

时间: 2024-10-31 09:58:34

使用 urllib 构造请求对象的相关文章

urllib基础-请求对象request

简单的案例-爬取百度首页 1 from urllib import request 2 ''' 3 爬取百度首页 4 ''' 5 # 确定爬去目标 6 base_url = 'http://www.baidu.com' 7 8 # 发起http请求 返回一个类文件对象 9 response = request.urlopen(url=base_url) 10 11 # 获取相应内容 12 html = response.read() 13 14 # 把bytes类型转换成utf-8编码的字符串类

jquery 源码学习(四)构造jQuery对象-工具函数

jQuery源码分析-03构造jQuery对象-工具函数,需要的朋友可以参考下. 作者:nuysoft/高云 QQ:47214707 EMail:[email protected] 声明:本文为原创文章,如需转载,请注明来源并保留原文链接. 读读写写,不对的地方请告诉我,多多交流共同进步,本章的的PDF等本章写完了发布. jQuery源码分析系列的目录请查看 http://nuysoft.iteye.com/blog/1177451,想系统的好好写写,目前还是从我感兴趣的部分开始,如果大家有对哪

爬虫基础框架 之urllib(一) --- urllib post请求

反爬问题 1. 反爬 [用户代理] web开发中,同一个url往往可以对应若干套不同的数据(或者界面,如手机.电脑),后台可以根据发起请求的前端的用户代理的不同,而决定应该给前端做出什么样的响应 如果检测到没有用户代理可以拒绝访问 解决方案:伪装请求头 2. 解决 创建 Request 对象req = request.Request(url=url, headers={用户代理}) 1 req = request.Request(url=url,headers={'UserAgent':'Moz

ajax之请求对象的创建以及它与服务器之间的4次“握手”(好吧其实只有3次)

request对象的创建 对于request对象的创建,我们总会第一时间反映到下列语句 var request=new XMLHttpRequest(); 不过因为各大浏览器之间的相互斗殴行为,事情是不会这么简单的. 比如非常经典的:IE浏览器没有XMLHttpRequest函数. 但这难不倒我们聪明机智的程序员,我们也有经典的应对措施: function createRequest(){     try{         request=new XMLHttpRequest();     }c

Request To JavaBean(请求对象转换为JavaBean对象)

一 参考资料 1 http://jc-dreaming.iteye.com/blog/563893 2 http://www.iteye.com/topic/76043 3 http://xubindehao.iteye.com/blog/754807 4 http://javafenger.iteye.com/blog/96829 5 http://www.kaila.com.cn/space.php?uid=7114&do=blog&id=458578 6 http://blog.cs

Servlet的学习之Request请求对象(3)

本篇接上一篇,将Servlet中的HttpServletRequest对象获取RequestDispatcher对象后能进行的[转发]forward功能和[包含]include功能介绍完. 首先来看RequestDispatcher对象的“转发”功能: 在<Servlet的学习(五)>中说过,使用ServletContext对象的getRequestDispatcher方法可以获得转发对象RequestDispatcher对象,将请求进行转发给其他的Servlet或者JSP处理,同时在该篇的结

jQuery.buildFragment源码分析以及在构造jQuery对象的作用

这个方法在jQuery源码中比较靠后的位置出现,主要用于两处.1是构造jQuery对象的时候使用 2.是为DOM操作提供底层支持,这也就是为什么先学习它的原因.之前的随笔已经分析过jQuery的构造函数了,也提到了有12个分支,其中有一个分支就是通过jQuery.buildFragment方法来处理的,什么情况呢?就是在处理复杂html标签的时候,例如$('<div>123</div>')这样的形式,在构造函数内部通过ret变量判断是不是简单标签,如果是就调用js的createEl

C#-WebForm-★内置对象简介★Request-获取请求对象、Response相应请求对象、Session全局变量(私有)、Cookie全局变量(私有)、Application全局公共变量、ViewState

内置对象: 1.Request - 获取请求对象 用法:接收传值 protected void Page_Load(object sender, EventArgs e) { TextBox1.Text = Request["abc"]; } 2.Response - 相应请求对象 用法:(李献策lxc) 1.执行代码 //点击按钮执行代码 void Button1_Click(object sender, EventArgs e) { Response.Write("<

jQuery源码分析-03构造jQuery对象-源码结构和核心函数

3. 构造jQuery对象 3.1源码结构 先看看总体结构,再做分解: (function( window, undefined ) { var jQuery = (function() { // 构建jQuery对象 var jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); } // jQuery对象原型 jQuery.fn = jQuery.