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 scikit-learn 做线性回归的示例代码
Nov 01 Python
python redis 删除key脚本的实例
Feb 19 Python
详解Python 调用C# dll库最简方法
Jun 20 Python
python调用其他文件函数或类的示例
Jul 16 Python
Python Lambda函数使用总结详解
Dec 11 Python
如何使用python传入不确定个数参数
Feb 18 Python
python删除某个目录文件夹的方法
May 26 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 Python
Python读写csv文件流程及异常解决
Oct 20 Python
使用Pytorch搭建模型的步骤
Nov 16 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下的权限算法的实现
2007/04/28 PHP
php多层数组与对象的转换实例代码
2013/08/05 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
jquery实现居中弹出层代码
2010/08/25 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
js重写方法的简单实现
2016/07/10 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
原生JS实现轮播图效果
2018/10/12 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
2019/08/09 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
python global和nonlocal用法解析
2020/02/03 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
教师岗位职责
2013/11/17 职场文书
领导证婚人证婚词
2014/01/13 职场文书
《小熊住山洞》教学反思
2014/02/21 职场文书
教师师德演讲稿
2014/05/06 职场文书
家访教师心得体会
2016/01/23 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技
详解Python中的for循环
2022/04/30 Python