urllib.request模块提供了最基本的构造HTTP请求的方法,利用它可以模拟浏览器的一个请求发起过程,同时它还带有处理授权验证(authenticaton)、重定向(redirection)、浏览器Cookies以及其他内容。

简单例子:

import urllib.requestresponse = urllib.request.urlopen('https://www.python.org')
print(response.read().decode('utf-8'))

其中的response是一个HTTPResposne类型的对象。
它主要包含read()、readinto()、getheader(name)、getheaders()、fileno()等方法
以及msg、version、status、reason、debuglevel、closed等属性。

例如,调用read()方法可以得到返回的网页内容,调用getheaders()方法获取响应的头信息,调用status属性可以得到返回结果的状态码,如200代表请求成功,404代表网页未找到等。

例:

import urllib.requestresponse = urllib.request.urlopen('https://www.python.org')
print(response.status)
print(response.getheaders())
print(response.read())

urlopen()函数的API:

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None,
cadefault=False, context=None)

可以发现,除了第一个参数可以传递URL之外,我们还可以传递其他内容,比如data(附加数据)、timeout(超时时间)等。

data参数

data参数是可选的。如果要添加该参数,并且如果它是字节流编码格式的内容,即bytes类型,则需要通过bytes()方法转化。另外,如果传递了这个参数,则它的请求方式就不再是GET方式,而是POST方式。
例子:

import urllib.parse
import urllib.requestdata = bytes(urllib.parse.urlencode({'word': 'hello'}), encoding='utf8')
response = urllib.request.urlopen('http://httpbin.org/post', data=data)
print(response.read())

这里我们传递了一个参数word,值是hello。它需要被转码成bytes(字节流)类型。其中转字节流采用了bytes()方法,该方法的第一个参数需要是str(字符串)类型,需要用urllib.parse模块里的urlencode()方法来将参数字典转化为字符串;第二个参数指定编码格式,这里指定为utf8。

这里请求的站点是httpbin.org,它可以提供HTTP请求测试。本次我们请求的URL为http://httpbin.org/post,这个链接可以用来测试POST请求,它可以输出请求的一些信息,其中包含我们传递的data参数。

运行结果如下:

{"args": {},"data": "","files": {},"form": {"word": "hello"},"headers": {"Accept-Encoding": "identity","Content-Length": "10","Content-Type": "application/x-www-form-urlencoded","Host": "httpbin.org","User-Agent": "Python-urllib/3.5"},"json": null,"origin": "123.124.23.253","url": "http://httpbin.org/post"
}

我们传递的参数出现在了form字段中,这表明是模拟了表单提交的方式,以POST方式传输数据。

python3中的urllib.request.urlopen()相关推荐

  1. Python3中的urllib.request模块

    Python 3.x版本后的urllib和urllib2 现在的Python已经出到了3.5.2 在Python 3以后的版本中,urllib2这个模块已经不单独存在(也就是说当你import url ...

  2. urllib.request.urlopen详解

    视频链接https://www.bilibili.com/video/BV1Us41177P1?p=2 requests.get详解见:https://blog.csdn.net/qq_4184582 ...

  3. iis设置导致python调用urllib.request.urlopen出错问题

    iis确实用的很少,从来没有注意过,今天就遇见了问题. python中使用urllib.request.urlopen调用测试服务器接口,之前从没有出现问题,今天用了一条70M的数据进行测试,突然报错 ...

  4. (转)python3 urllib.request.urlopen() 错误UnicodeEncodeError: 'ascii' codec can't encode characters...

    代码内容: url = 'https://movie.douban.com/j/search_subjects?type=movie'+ str(tag) + '&sort=recommend ...

  5. Python3 urllib.request.urlopen()API使用

    文章目录 urllib库的基本使用---request模块 请求网页-urllib.request.urlopen() 参考资料 urllib库的基本使用-request模块 本文代码基本来源于Pyt ...

  6. 5、urllib.request.urlopen()

    5.urllib.request.urlopen() 官方文档链接:https://docs.python.org/3/library/urllib.request.html urllib.reque ...

  7. Python中的urllib.request模块

    版权声明:本文为Jurbo原创文章,转载请加上链接和作者名,标明出处. https://blog.csdn.net/Jurbo/article/details/52313636 因为在玩Python ...

  8. urllib.request.urlopen(req).read().decode解析http报文报“‘utf-8‘ codec can‘t decode”错处理

    urllib.request.urlopen(req).read().decode解析http报文报"'utf-8' codec can't decode"错处理:https:// ...

  9. python urllib3 request 无返回结果_python urllib request urlopen请求网页返回bytes类型

    首次调用read()时有返回,之后的调用一直返回b'' >>> f = request.urlopen('http://www.baidu.com/') >>> f ...

最新文章

  1. 看到这些代码,我自叹不如!!!
  2. exe一机一码加密工具_Python代码加密混淆
  3. Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记
  4. A winner is a dreamer who never gives up
  5. oracle存储日志
  6. ESP8266在Alios-Things上的入门开发指南 (一)开发环境搭建及HelloWorld固件
  7. ios 代码设置控件宽高比_iOS--利用比例纯代码适配屏幕大小
  8. python tkinter下载器_下载小说还要去找网站?Python使用tkinter打造一个小说下载器...
  9. python如何爬虫eps数据_入门Python爬虫 -- 解析数据篇
  10. 在Ubuntu中搭建.NET开发环境
  11. 如何用ssh工具连接自己的“小米手机”——雷总看了直呼内行!!!
  12. TensorFlow教程之API DOC 6.3.10. NN
  13. LeetCode【1051. 高度检查器】
  14. Java编写简单的爱心
  15. EVO工具在EUROC数据集TUM数据集,评测ORB-SLAM3和VINS-MONO
  16. 购买计算机设备计入什么科目,企业购买设备计入什么会计科目?附会计分录
  17. 3D测量| 主动模式投影提高AOI三维测量精度
  18. 【Unity】Mesh网格编程(四)麦比乌斯环
  19. 怎么让计算机响音乐,如何让电脑声音更大一点
  20. Bia布刷题日记 LC-15 三数之和

热门文章

  1. 使用predix-cli来简化cf-cli操作
  2. 最老程序员创业开发实训---30+程序员的希望
  3. favicon.ico网站图标不显示
  4. 【Java报错找不到指定文件】Exception in thread “main“ java.io.FileNotFoundException:...... (系统找不到指定的文件。)
  5. Win10官方1909版本无法打开windows安全中心中病毒和威胁防护的实时保护解决方案。
  6. html图片自动循环,css实现图片循环的动画效果(代码)
  7. moveTo与moveBy的区别
  8. flow工作流java_Java工作流引擎jflow对流程的结束大总结
  9. 【模拟】【DFS】【递归】阿里郎
  10. 《机甲战士5》如何让该游戏系列焕然一新