Python的urllib和urllib2模块都做与请求URL相关的操作。

它们最显著的差异为:

urllib2可以接受一个Request对象,并以此可以来设置一个URL的headers,但是urllib只接收一个URL。

urllib模块可以提供进行urlencode的方法,该方法用于GET查询字符串的生成,urllib2的不具有这样的功能.

python 2.7.x提供了urllib与urllib2,鉴于上述异同两个库通常搭配使用。

urlopen

urllib2.urlopen(url, *data, *timeout)

urlopen方法是urllib2模块最常用的方法,用于访问发送某一请求。

url参数可以是一个字符串url或者是一个Request对象。

可选参数timeout用于设置超时时间,以秒为单位。

如果没有指定,将使用设置的全局默认timeout值。

urlopen使用默认opener进行访问, 为阻塞式IO.

如果请求成功,函数将返回响应。

在data为None时默认用GET方法:

import urllib2
response = urllib2.urlopen('http://python.org/')
html = response.read()
print(html)

使用POST发送参数前需要先将参数编码:

import urllib
import urllib2 values = {
'action': 'sign-in',
'username': 'finley',
'password': '1234'
}
values = urllib.urlencode(values)
response = urllib2.urlopen('http://127.0.0.1:8080/game', values)
print(response.read())

urllib.urlencode不能直接进行Unicode编码,需要先进行转码:

urllib.urlencode (u'bl'.encode('utf-8'))

qutoe与urlencode均可以进行编码,区别在于quote的空格由%20替代而urlencode的空格由+替代。

Request

使用Request对象可以设置更多请求参数:

Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

  • url: url字符串

  • data:额外发送的数据

在data为None时默认用GET方法提交,有参数时默认用POST方法提交

示例:

import urllib
import urllib2
url = 'http://127.0.0.1:8080/game'
values = {
'action': 'sign-in',
'username': 'finley',
'password': '1234'
}
data = urllib.urlencode(values)
request = urllib2.Request(url, data)
response = urllib2.urlopen(request)
html = response.read()

cookie

为了使用cookie我们需要一个opener对象来维护cookiejar.

class BaseDriver:
def __init__(self):
self.opener = None
self.cookiejar = None
self.initOpener() def initOpener(self):
self.cookiejar = cookielib.CookieJar()
self.opener = urllib2.build_opener(
urllib2.HTTPCookieProcessor(self.cookiejar)
) def get_cookie(self):
for cookie in self.cookiejar:
if cookie.name == 'csrftoken':
return cookie.value
return None def doRequest(self, action, values):
data = urllib.urlencode(values)
request = urllib2.Request(url, data)
return self.opener.open(request)

参考资料:

urllib与urllib2的学习总结(python2.7.X)

Python爬虫入门六之Cookie的使用

urllib module doc

urllib2 module doc

Python urllib简单使用的更多相关文章

  1. Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://bbs.51testing. ...

  2. Python 利用Python编写简单网络爬虫实例2

    利用Python编写简单网络爬虫实例2 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://www.51testing. ...

  3. Python 实现简单的 Web

    简单的学了下Python, 然后用Python实现简单的Web. 因为正在学习计算机网络,所以通过编程来加强自己对于Http协议和Web服务器的理解,也理解下如何实现Web服务请求.响应.错误处理以及 ...

  4. 用 python实现简单EXCEL数据统计

    任务: 用python时间简单的统计任务-统计男性和女性分别有多少人. 用到的物料:xlrd 它的作用-读取excel表数据 代码: import xlrd workbook = xlrd.open_ ...

  5. python开启简单webserver

    python开启简单webserver linux下面使用 python -m SimpleHTTPServer 8000 windows下面使用上面的命令会报错,Python.Exe: No Mod ...

  6. Python开发简单爬虫 - 慕课网

    课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序   课程目录 第1章 课程介绍 ...

  7. python urllib模块的urlopen()的使用方法及实例

    Python urllib 库提供了一个从指定的 URL 地址获取网页数据,然后对其进行分析处理,获取想要的数据. 一.urllib模块urlopen()函数: urlopen(url, data=N ...

  8. python使用简单http协议来传送文件

    python使用简单http协议来传送文件!在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServ ...

  9. Python超简单的HTTP服务器

    Python超简单的HTTP服务器 安装了python就可以 python -m SimpleHTTPServer 执行这一个命令即可实现一个HTTP服务器,将当前目录设为HTTP服务目录,可以通过h ...

随机推荐

  1. MYC编译器源码之语法分析

    MyC编译器采用自顶向下的方法进行语法解析,这种语法解析方式,一般是从最左边的Token开始,然后自顶向下看哪一条语法规则可能包含这个Token,如果包含这个Token,则自左向右根据这条语法规则逐一 ...

  2. linux系统编程之文件与IO(八):文件描述符相关操作-dup,dup2,fcntl

    本节目标: 1,文件共享 打开文件内核数据结构 一个进程两次打开同一个文件 两个进程打开同一个文件 2,复制文件描述符(dup.dup2.fcntl) 一,文件共享 1,一个进程打开两个文件内核数据结 ...

  3. asp.net 下载EXCEL文件

    一.需要导入NPOI 库文件 打开VS2012 工具>>库程序包管理器>>管理解决方案的NuGet程序包,搜索NPOI,如下图 安装完成: 添加 using NPOI.HSSF ...

  4. VSCode开发(一)——入门基础

    8天掌握EF的Code First开发之Entity Framework介绍   返回<8天掌握EF的Code First开发>总目录 本篇目录 Entity Framework概要 什么 ...

  5. UE4随笔(一)准备过程

    19号,也就是中国时间20日凌晨,虚幻4放出了"订阅制"这个重磅炸弹,估计出乎大多数人的想象,已经不止一个同事表示"自己的引擎这下没用了". 笔者前天搞定了付款 ...

  6. sqlServer 查询表中31到40的记录,考虑id不连续的情况

    SQL   查询表中31到40的记录,考虑id不连续的情况 写出一条sql语句输出users表中31到40记录(数据库为SQL Server,以自动增长的ID作为主键,注意ID可能不是连续的)? -- ...

  7. Meteor in Action(一)起步

    杜撰的名字,这个系列文章旨在记录工作中开发APP所要学习meteor的过程. 最简单的例子,运行Meteor自带的缺省的Hello world例子. 安装好Meteor后,建立一个空白目录. 然后: ...

  8. Java并发编程读书笔记(一)

    ----------------------------------------------<Java并发编程实战>读书笔记-------------------------------- ...

  9. 在kolla中配置cinder ceph多后端

    原文链接:在kolla中配置cinder ceph多后端

  10. arya-sites模块的主要类

      Site类,生成路由,    - 方法:url,get_urls, register, login,logout   - 字段:_registry = {}    Config,基础配置类,主要用 ...