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登录Gmail并发送Gmail邮件的教程
Apr 17 Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 Python
python中web框架的自定义创建
Sep 08 Python
详解Python绘图Turtle库
Oct 12 Python
Python通过Tesseract库实现文字识别
Mar 05 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
May 11 Python
Django使用Profile扩展User模块方式
May 14 Python
在python下实现word2vec词向量训练与加载实例
Jun 09 Python
keras读取h5文件load_weights、load代码操作
Jun 12 Python
Python装饰器结合递归原理解析
Jul 02 Python
详解pandas赋值失败问题解决
Nov 29 Python
python - timeit 时间模块
Apr 06 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
PHP中trim()函数简单使用指南
2015/04/16 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
javascript不同页面传值的改进版
2008/09/30 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
2013/11/22 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
vue动画效果实现方法示例
2019/03/18 Javascript
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
jQuery实现简单评论区功能
2020/10/26 jQuery
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
Python模块包中__init__.py文件功能分析
2016/06/14 Python
Python语言描述随机梯度下降法
2018/01/04 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python 拼接文件路径的方法
2018/10/23 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
柯基袜:Corgi Socks
2017/01/26 全球购物
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
农林环境专业求职信
2014/03/13 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
Python中的pprint模块
2021/11/27 Python
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技