1urlopen

属于url.request类

我们用urlopen("网址")来发送请求

最基础的发送请求如下

from urllib.request import urlopen

reponse=urlopen('https://www.baidu.com')

print(reponse.read.decode('utf-8'))

这里面的reponse是一个HTTPResponse类型的对象

包含的方法有read(),readto(),getheader(name),getheaders(),fileno()

read上面已经用过我们还可以print(reponse.getheaders());print(reponse.getheader('name'))

包含的属性有msg,version,status,reason,debuglevel,close等

同时urlopen还有其他参数可以选例如:

data参数,要求字节流编码格式内容

data=bytes(urllib.parse.urlencode({'word':'hello'},encode='utf-8')),

timeout参数,表示超过指定时间,就会抛出异常

try:

  response=urllib.request.urlopen('http://httpbin.org/get',timeout=0.1)

except urllib.error.URLErroe as e:

  if isinstance(e.reason,socket.timeout):

    print('Time Out')

其它还有context参数,cafile,capath参数

2Rquest

urlopen只能发起最简单的请求,如果我们需要在请求中加入一些Headers等信息,就需要用到Request

Resquest的构造方法如下

class urllib.request.Request(url,data=None,headers={},origin_req_host=None,\

unverifiable=False,method=None)

url:必填参数

data参数:同上,如果要传,必须要传bytes类型,如果是字典,用parse模块里面的urlencode编码

headers参数:是一个字典,这是请求中的headers了,可以自己直接构造,还可以调用Request示例的add_headers()方法

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

underifiable参数值得是这个请求是无法验证的,默认是false

methon参数用来支持请求使用的方法,比如GET,POST,PUT等等

下面是例子

url='http://httpbin.org/post'

headers={

  'User-Agent':'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',

  Host': 'httpbin.org'

}

dict={

  ‘name’:'lihua'}

data=bytes(parse.urlendoe(dict),encoding='utf-8')

req=request.Request(url=url,data=data,headers=headers,method='POST')

reponse=request.urlopen(erq)

print(repose,read().decode('utf-8'))

想要使用add_headerd的话则这么写

req=request.Request(url=url,data=data,method='POST')

req.add_header('User-Agent','Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')

下面的就是更高级的handler的用法,以后再续

python3 爬虫2--发送请求1的更多相关文章

  1. 爬虫模块介绍--request(发送请求模块)

    爬虫:可见即可爬   # 每个网站都有爬虫协议 基础爬虫需要使用到的三个模块 requests 模块  # 模拟发请求的模块 PS:python原来有两个模块urllib和urllib的升级urlli ...

  2. python3爬虫中文乱码之请求头‘Accept-Encoding’:br 的问题

    当用python3做爬虫的时候,一些网站为了防爬虫会设置一些检查机制,这时我们就需要添加请求头,伪装成浏览器正常访问. header的内容在浏览器的开发者工具中便可看到,将这些信息添加到我们的爬虫代码 ...

  3. Python3编写网络爬虫01-基本请求库urllib的使用

    安装python后 自带urllib库 模块篇 分为几个模块如下: 1. urllib.request 请求模块 2. urllib.parse 分析模块 3. urllib.error 异常处理模块 ...

  4. Python3爬虫(三)请求库的使用之urllib

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.urllib库: 1. 是Python内置的HTTP请求库 2. 在Python2中,由urllib和urll ...

  5. Python爬虫(二)——发送请求

    1. requests库介绍 ​ 在python中有许多支持发送的库.比如:urlib.requests.selenium.aiohttp--等.但我们当前最常用的还是requests库,这个库是基于 ...

  6. Java爬虫(一)利用GET和POST发送请求,获取服务器返回信息

    本人所使用软件 eclipse fiddle UC浏览器 分析请求信息 以知乎(https://www.zhihu.com)为例,模拟登陆请求,获取登陆后首页,首先就是分析请求信息. 用UC浏览器F1 ...

  7. 20200726_java爬虫_使用HttpClient模拟浏览器发送请求

    浏览器获取数据: 打开浏览器 ==> 输入网址 ==> 回车查询 ==> 返回结果 ==> 浏览器显示结果数据 HttpClient获取数据: 创建HttpClient ==& ...

  8. 【Python3爬虫】最新的模拟登录新浪微博教程

    一.写在前面 首先呢,由于之前重装系统,又要重新配置环境,然后还有一些别的事,导致我一直没有写爬虫了,不过现在又可以继续写了. 然后我这次说的模拟登录新浪微博呢,不是使用Selenium模拟浏览器操作 ...

  9. 【Python3爬虫】用Python中的队列来写爬虫

    一.写在前面 当你看着你的博客的阅读量慢慢增加的时候,内心不禁有了些小激动,但是不得不吐槽一下--博客园并不会显示你的博客的总阅读量是多少.而这一篇博客就将教你怎么利用队列这种结构来编写爬虫,最终获取 ...

随机推荐

  1. 【职业规划】该如何选择职业方向?性能?自动化?测开?,学习选择python、java?看完你会感谢我的~

    前言 随着近两年来互联网行业的飞速发展,互联网技术的从业人员也越来越多. 近两年来技术岗位中测试和前端工程师变成了程序员中最好招的岗位. 测试行业卷也越来越厉害了. 也正是因为如此,我们要把自己的路越 ...

  2. GCC 使用库文件名进行链接

    使用 GCC 进行 C/C++ 代码编译时,如果代码中使用到了库函数,需要使用 -l 选项指定该库函数所在的库.如:-lm.-lrt.-lpthread等.这种方式使用的是库的缩写.一个库的文件名如果 ...

  3. [LeetCode]1342. 将数字变成 0 的操作次数

    给你一个非负整数 num ,请你返回将它变成 0 所需要的步数. 如果当前数字是偶数,你需要把它除以 2 :否则,减去 1 . 示例 1: 输入:num = 14 输出:6 解释: 步骤 1) 14 ...

  4. k8s-ingress增加跨域问题

    第一种: kubectl get ingresses. -n rrzhibo-admin test-rrzb-apiadmin-gateway-http-ingress -o yaml apiVers ...

  5. Python 面向对象编程之封装的艺术

    1. 面向对象编程 OOP ( Object  Oriented Programming) 即面向对象编程. 面向对象编程是一种编码思想,或是一种代码组织方式.如同编辑文章时,可以选择分段.分节的方式 ...

  6. tor-browse

    https://sourceforge.net/projects/t-browser/

  7. Springboot基于Redisson实现Redis分布式可重入锁【案例到源码分析】

    一.前言 我们在实现使用Redis实现分布式锁,最开始一般使用SET resource-name anystring NX EX max-lock-time进行加锁,使用Lua脚本保证原子性进行实现释 ...

  8. 痞子衡嵌入式:揭秘i.MXRTxxx系列上串行NOR Flash双程序可交替启动设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT500/600上串行NOR Flash双程序可交替启动设计. 在上一篇文章 <i.MXRT1170上串行NOR Fla ...

  9. Qt:QDateTime、QDate、QTime与QDateTimeEdit

    时间日期是经常遇到的数据类型,Qt中的时间日期类如下: QTime:时间类型,只表示时间,如15:23:13: QDate:日期类型,只表示日期,如2017-4-5: QDateTime:日期时间类型 ...

  10. Python:pandas(三)——DataFrame

    官方文档:pandas之DataFrame 1.构造函数 用法 pandas.DataFrame( data=None, index=None, columns=None, dtype=None, ) ...