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)
相关文章推荐
- Python----文件操作
- python爬虫:案例二:携程网酒店价格信息
- python 字符串内建函数
- LintCode:在二叉查找树中插入节点
- 地铁译:Spark for python developers --- 搭建Spark虚拟环境2
- Python学习笔记(二)列表统计词频
- [Python] Spaceship游戏初步实现 Mini-project #7
- Python 迭代器
- python property
- python json json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes
- 《机器学习实战》使用Apriori算法和FP-growth算法进行关联分析(Python版)
- python命令行解析工具Argparse
- python 工厂函数
- python+opencv实现高斯平滑滤波
- python——时间与时间戳之间的转换
- 第三章:IPython交互式开发环境Day5
- python中构造带u'的字符串
- python安装pip
- Python中使用SQLAlchemy连接Mysql数据库(单表操作)
- Python 矩阵的旋转