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 相关文章推荐
Pyhton中防止SQL注入的方法
Feb 05 Python
Python的设计模式编程入门指南
Apr 02 Python
Python实现注册登录系统
Aug 08 Python
深入浅析python 中的匿名函数
May 21 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
Python语言进阶知识点总结
May 28 Python
python 杀死自身进程的实现方法
Jul 01 Python
Python如何实现强制数据类型转换
Nov 22 Python
pandas 数据类型转换的实现
Dec 29 Python
python 中的@运算符使用
May 26 Python
Python包argparse模块常用方法
Jun 04 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
Apr 07 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
php5.3 goto函数介绍和示例
2014/03/21 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
基于jquery的分页控件(C#)
2011/01/06 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
jquery操作ID带有变量的节点实例
2016/12/07 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
angularjs之$timeout指令详解
2017/06/13 Javascript
Angular 如何使用第三方库的方法
2018/04/18 Javascript
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
python利用正则表达式提取字符串
2016/12/08 Python
简单了解python模块概念
2018/01/11 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
Python跳出多重循环的方法示例
2019/07/03 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
wxPython实现文本框基础组件
2019/11/18 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
终端业务员岗位职责
2013/11/27 职场文书
法律专业学生的自我评价
2014/02/07 职场文书
疾病捐款倡议书
2014/05/13 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书