1.0 Urllib简介


  Urllib是python自带的标准库,无需安装,直接引用即可。urllib通常用于爬虫开发,API(应用程序编程接口)数据获取和测试。在python2和python3中,urllib在不同版本中的语法有明显的改变。

  Python2分为urllib和urllib2,urllib2可以接收一个request对象,并以此来放置一个URL的Headers,但是urllib只接收一个URL,意味着不能伪装用户代理字符串等。urllib模块可以提供进行Urlencode的方法,该方法用于GET查询字符串的生成,urllib2不具有这样的功能。这也是urllib与  urllib2经常在一起使用的原因。

  由于urllib在不用的python版本上有明显的区别,在实际开发中也遇到一些尴尬的情况,其中最为主要的是版本之间的不兼容所带来的问题。

  在python3中,urllib是一个收集几个模块来使用URL的软件包,大致具备以下功能:

  • urllib.request:用于打开和读取URL。

  • urllib.error:包含提出的例外urllib.request。

  • urllib.parse:用于解析URL。

  • urllib.robotparser:用于解析robots.txt文件。

1.1 发送请求


  urllib.request.urlopen 的语法如下

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

 参数:

  • data:默认值为None,urllib判断参数data是否为None从而区分请求的方式。若参数data为None,则代表请求方式为GET,反之请求方式为POST,发送POST请求,参数data以字典形式存储数据,并将参数data由字典类型转换成字节类型才能完成POST请求。
  • timeout:超时设置,指定阻塞操作(请求时间)的超市(如果未指定,就使用全局默认超时设置)。
  • cafile, capath 和 cadefault:使用参数指定一组HTTPS请求的可信CA证书,cafile应指向包含一组CA证书的单个文件:capath应指向证书文件的目录:cadefault通常使用默认值即可。
  • context:描述各种SSL选项的实例。
    在实际使用中,常用的参数有url,data和timeout。若在爬虫中遇到证书验证,则可将证书验证直接关闭,也可以设置参数指向证书的信息和位置。相比而言,设置证书比较耗时,而且通用性不强。
    当对网站发送请求时,网站会返回相应的响应内容。urlopen对象提供获取网站响应内容的方法函数,分别介绍如下:
  • read() , readline() , readlines() , fileno() , close():对HTTPResponse类型数据操作。
  • info():返回HTTPMessage对象,表示远程服务器返回的头信息
  • getcode():返回HTTP状态码。
  • geturl():返回请求的url。
 
下面例子用于实现urllib模块对网站发送请求并将响应内容写入文本文档,代码如下:
import urllib.request
response=urllib.request.urlopen('http://movie.douban.com',None,2)
html=response.read().decode('utf-8')
f=open('html.txt','w',encoding='utf-8')
f.write(html)
f.close()

1.2复杂的请求


 
 
 

最新文章

  1. QQ--模拟登录
  2. Java 中的 Characters
  3. Spring JdbcTemplate 的使用与学习
  4. Mybatis Generator(定制化)代码生成器
  5. MYSQL日常操作命令再熟悉
  6. bzoj3389:[Usaco2004 Dec]Cleaning Shifts安排值班
  7. 关于C语言的输入-scanf、gets、getchar、getch、getline
  8. ZOJ - 2615 Cells
  9. Ant Design UI组件
  10. 20年硅谷技术牛人到访DataPipeline谈:技术如何与业务平衡发展
  11. Java 集合系列(一)
  12. ES6箭头函数Arrow Function
  13. .net webapi跨域方法整理
  14. MYSQL创建表的约束条件(可选)
  15. java自学-编程入门
  16. 基于jquery扩展漂亮的CheckBox
  17. orcal 数据库 maven架构 ssh框架 的全注解环境模版 maven中央仓库批量删除lastupdated文件后依然是lastupdated解决方法 mirror aliyun中央仓库
  18. Webpack4 学习笔记六 多页面配置和devtool
  19. Odoo8中安装新模块找不到的问题
  20. Poj 3287 Catch That Cow(BFS)

热门文章

  1. [Erlang危机](5.1.4)端口port
  2. python2.x里unicode错误问题
  3. ubuntu安装virtualbox
  4. luogu 4427 求和
  5. 洛谷 P1965 转圈游戏 —— 快速幂
  6. linux下的C语言开发(静态库/动态库)
  7. bzoj 1087: [SCOI2005]互不侵犯King【状压dp】
  8. bzoj 1059: [ZJOI2007]矩阵游戏【匈牙利算法】
  9. Odoo免费开源企业信息化平台助力企业成功
  10. 学习http协议的三次握手和四次挥手 ~~笔记