Python爬虫入门笔记:urllib库的使用2

时间:2021-07-08 04:03:37

上文我们说了urllib库的简单使用,简单总结之:urllib2用一个Request对象来映射你提出的HTTP请求。你用你要请求的地址创建一个Request对象,通过调用urlopen并传入Request对象,将返回一个相关请求response对象,这个应答你可以在Response中调用.read()。

其实,在HTTP请求时​除了上文提到的可能要加headers验证,还需要传入表单数据,打个比方,大灰狼要进门,不光要带上兔子妈妈的面具,还要跟小兔子对暗号的,这个暗号就是表单数据,对上号了,大灰狼就可以进去饱餐一顿喽!

数据传送分为POST和GET两种方式,两种方式有什么区别呢?

最重要的区别是GET方式是直接以链接形式访问,链接中包含了所有的参数,当然如果包含了密码的话是一种不安全的选择,不过你可以直观地看到自己提交了什么内容。POST则不会在网址上显示所有的参数,不过如果你想直接查看提交了什么就不太方便了,大家可以酌情选择。

1、POST方式

在HTTP中,POST请求发送是最常用的,通常在你提交一个HTML表单时由你的浏览器来做,并不是所有的POSTs都来源于表单,你能够使用POST提交任意的数据到你自己的程序。一般的HTML表单,data需要编码成标准形式。然后做为data参数传到Request对象。编码工作使用urllib的函数而非urllib2。

下面我们借用一个例子感受一下:

#_*_coding:utf-8_*_

import urllib
import urllib2

url = 'http://www.someserver.com/register.cgi'
#构造表单内容
values = {'name': 'WHY',
'location': 'SDU',
'language': 'Python'}
# 编码工作
data = urllib.urlencode(values)
# 发送请求同时传data表单
req = urllib2.Request(url, data)
#接受反馈的信息
response = urllib2.urlopen(req)
#读取反馈的内容
the_page = response.read()


 
2、GET方式 

至于GET方式我们可以直接把参数写到网址上面,直接构建一个带参数的URL出来即可。

#_*_coding:utf-8_*_

import urllib
import urllib2

#构造表单内容
values={}
values['name'] = 'WHY'
values['location'] = 'SDU'
values['language'] = 'Python'
#编码工作
data = urllib.urlencode(values)

url = 'http://www.example.com/example.cgi'
#构造新的url
full_url = url + '?' + data
request = urllib2.Request(full_url)
response = urllib2.urlopen(request)
print response.read()


 
好啦,大家可以在实例中自己尝试一下! 


更多关于urllib的资料:

1、http://blog.csdn.net/pleasecallmewhy/article/details/8923067

2、http://cuiqingcai.com/947.html

3、http://www.cnblogs.com/yuxc/archive/2011/08/01/2123995.html