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 获取进程pid号的方法
Mar 10 Python
通过数据库向Django模型添加字段的示例
Jul 21 Python
python学习之第三方包安装方法(两种方法)
Jul 30 Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 Python
python中强大的format函数实例详解
Dec 05 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
详解django中url路由配置及渲染方式
Feb 25 Python
python添加菜单图文讲解
Jun 04 Python
详解Python3定时器任务代码
Sep 23 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
python-地图可视化组件folium的操作
Dec 14 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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
php smarty模版引擎中的缓存应用
2009/12/02 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
JavaScript 变量命名规则
2009/09/23 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
JavaScript实现x秒后自动跳转到一个页面
2013/01/03 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
python检测某个变量是否有定义的方法
2015/05/20 Python
Python编程中装饰器的使用示例解析
2016/06/20 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
python 列表降维的实例讲解
2018/06/28 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
python 字符串追加实例
2019/07/20 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
如何理解transaction事务的概念
2015/05/27 面试题
五一劳动节活动记录
2014/03/23 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
干部年终考核评语
2015/01/04 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
2020年元旦祝福语录,总有适合你的
2019/12/31 职场文书
详解Spring事件发布与监听机制
2021/06/30 Java/Android
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis
golang实现浏览器导出excel文件功能
2022/03/25 Golang
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python