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 自动安装 Rising 杀毒软件
Apr 24 Python
利用Python开发微信支付的注意事项
Aug 19 Python
python实现批量修改文件名代码
Sep 10 Python
python读写LMDB文件的方法
Jul 02 Python
python-opencv颜色提取分割方法
Dec 08 Python
详解Python装饰器
Mar 25 Python
Python网络爬虫之爬取微博热搜
Apr 18 Python
python内置模块collections知识点总结
Dec 19 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
Pandas的Apply函数具体使用
Jul 21 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
Jan 10 Python
python基于turtle绘制几何图形
Jun 15 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
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
浅谈PHP强制类型转换,慎用!
2013/06/06 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
php分页函数示例代码分享
2014/02/24 PHP
jquery 选择器部分整理
2009/10/28 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
python操作redis方法总结
2018/06/06 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
Python编译为二进制so可执行文件实例
2019/12/23 Python
Python continue语句实例用法
2020/02/06 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
学生违纪检讨书200字
2014/10/21 职场文书
门面房租房协议书
2014/12/01 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
react国际化react-intl的使用
2021/05/06 Javascript