您的位置:首页 > 编程语言 > Python开发

python之urllib2使用总结

2016-05-09 21:16 621 查看

urllib2是什么

    urllib2是python中用来打开url的一个模块.除此之外,python中还有一个功能类似的模块urllib,它们的区别是:

urllib2可以接受一个Request类的实例来设置URL请求的headers,这可以帮助我们的代码伪装成浏览器,而urllib只可以接受url
urllib提供urlencode方法来encode发送的数据,而urllib2没有.因此urllib和urllib2会一起使用取长补短.

基础使用

  简单访问网页

import urllib2

response = urllib2.urlopen('http://www.baidu.com')
html = response.read()
print html
  输出百度首页的HTML源码

  使用Request对象

  urlib2也可先构造一个Request对象,之后调用urlopen函数,接收返回的response对象

import urllib2

req = urllib2.Request('http://www.baidu.com')
response = urllib2.urlopen(req)
html = response.read()
  Request对象允许做两件额外的事:

  (1)可以向服务器发送数据:

     urllib2不发送数据时,使用的是GET请求;

      发送数据时使用的是POST请求,此时需要data以标准的方式encode,然后作为一个数据参数传送给Request对象.

  (2)可以向服务器发送额外的信息(metadata),这些信息被当作HTTP头发送:

      Header可以通过Request提供的add_header()方法进行添加,可以用来伪装成浏览器.

import urllib
import urllib2

values = {'user': 'test', 'password': '123456'}
data = urllib.urlencode(values)
req = urllib2.Request('http://www.baidu.com',data)
req.add_header('User-Agent','Mozilla/5.0')
response=urllib2.urlopen(req)
result=response.read()
    这段代码是向百度发送数据,它会返回一个错误的页面,因为正常访问百度是不需要POST数据的.

    可以利用这个来使用代码登陆一些网站.

 使用代理:

def use_proxy(url):
request = urllib2.Request(url)
request.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64')
request.set_proxy('123.135.31.141:6666', 'http')
content = urllib2.urlopen(request).read().decode('gb2312')
print len(content)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: