python urllib urlopen()对象方法/代理的补充说明


Posted in Python onJune 29, 2017

python urllib urlopen()对象方法/代理的补充说明

urllib 是 python 自带的一个抓取网页信息一个接口,他最主要的方法是 urlopen(),是基于 python 的 open() 方法的。下面是主要说明:

urllib.urlopen('网址')

这里传入urlopen()的参数有特别说要求,要遵循一些网络协议,比如http,ftp,也就是说,在网址的开头必须要有http://这样的说明,如:urllib.urlopen('http://www.baidu.com')。

要么就是本地文件,本地文件需要使用file关键字,比如 urllib.urlopen('file:nowamagic.py'),注意,这里的hello.py是指的是当前的classpath所指定的内容,如果对hello.py这里有什么疑问那一定是python寻找classpath的顺序不是很清楚了,当然也可以直接写全部路径,urllib.urlopen('file:F:\pythontest\nowamagic.py')。

打开 ftp 文件也是可以的,写法 urllib.urlopen(url='ftp://用户名:密码@ftp地址/') 等。

示例程序:

import urllib
f = urllib.urlopen('file:F:\pythontest\nowamagic.py')
a = f.read()
print a

如果传入的参数正确,比如该网站可以访问,没有特殊情况(比如需要代理,被墙等),那么将返回一个类似于文件对象的对象。即上面代码中的f,f对象有的方法一些操作方法,使用dir(f):

['__doc__', '__init__', '__iter__', '__module__', '__repr__', 'close', 'fileno', 'fp', 'geturl', 'headers', 'info', 'next', 'read', 'readline', 'readlines', 'url']

使用read()方法会将所有内容读取出来,并且同时f对象类似于先入先出的数据,在使用f.read()将得不到任何数据,也就是说,得到的数据在这个时候如果想在后面进行任何处理操作的话,需要另外定义一个对象来进行存储。如上例中的a。而info(),geturl()方法,也是基于f这个文档对象的,所以,使用

>>>f.geturl()
 'F://pythontest//nowamagic.py'

接下来是urllib的代理设置:

import urllib
proxies = {'http':'http://***.***.***.***:1984'}
filehandle = urllib.urlopen('http://www.需要代理才能访问的网站.com/',proxies = proxies)
a = filehandle.read()
print a

以上是最基本代理,即代理访问到该网站,并且能够获得该网站的内容。但是如果遇到需要登录,或者需要cookie等的网站呢?

查看urllib的源码:

def urlopen(url, data=None, proxies=None):
  """urlopen(url [, data]) -> open file-like object"""
  global _urlopener
  if proxies is not None:
    opener = FancyURLopener(proxies=proxies)
  elif not _urlopener:
    opener = FancyURLopener()
    _urlopener = opener
  else:
    opener = _urlopener
  if data is None:
    return opener.open(url)
  else:
    return opener.open(url, data)

由上面urllib的urlopen的源码,可以看出,还可以传入一个data参数,data参数也应该是一个字典,因为在使用浏览器向服务器发送数据的时候,我们发送的就是字典类型的数据。

还有一点,就是代理支持是 python 2.3 以后加入的。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
Python实现的简单文件传输服务器和客户端
Apr 08 Python
使用python加密自己的密码
Aug 04 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 Python
对Python实现累加函数的方法详解
Jan 23 Python
Python读取实时数据流示例
Dec 02 Python
Django Xadmin多对多字段过滤实例
Apr 07 Python
python实现快速文件格式批量转换的方法
Oct 16 Python
Django2.1.7 查询数据返回json格式的实现
Dec 29 Python
python 统计代码耗时的几种方法分享
Apr 02 Python
详解Django中 render() 函数的使用方法
Apr 22 Python
Python打包exe时各种异常处理方案总结
May 18 Python
python笔记:mysql、redis操作方法
Jun 28 #Python
老生常谈Python序列化和反序列化
Jun 28 #Python
python flask实现分页效果
Jun 27 #Python
Django自定义分页效果
Jun 27 #Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 #Python
最近Python有点火? 给你7个学习它的理由!
Jun 26 #Python
Python的装饰器使用详解
Jun 26 #Python
You might like
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
php封装的验证码类分享
2017/02/26 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
JS中style属性
2006/10/11 Javascript
jQuery :first选择器使用介绍
2013/08/09 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
利用Three.js如何实现阴影效果实例代码
2017/09/26 Javascript
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
python读取和保存图片5种方法对比
2018/09/12 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
Selenium向iframe富文本框输入内容过程图解
2020/04/10 Python
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
大四学生思想汇报
2014/01/13 职场文书
连锁酒店店长职责范本
2014/02/13 职场文书
中华魂放飞梦想演讲稿
2014/08/26 职场文书
主要领导对照检查材料
2014/08/26 职场文书
读后感作文评语
2014/12/25 职场文书
甲午风云观后感
2015/06/02 职场文书
拉贝日记观后感
2015/06/05 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers