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网络编程学习笔记(六):Web客户端访问
Jun 09 Python
Python的高级Git库 Gittle
Sep 22 Python
利用Python爬取可用的代理IP
Aug 18 Python
python基础之入门必看操作
Jul 26 Python
Python读取txt某几列绘图的方法
Oct 14 Python
Python 实现王者荣耀中的敏感词过滤示例
Jan 21 Python
python爬取微信公众号文章的方法
Feb 26 Python
Python函数参数类型及排序原理总结
Dec 19 Python
python 实现rolling和apply函数的向下取值操作
Jun 08 Python
Python经典五人分鱼实例讲解
Jan 04 Python
Jupyter Notebook添加代码自动补全功能的实现
Jan 07 Python
python使用torch随机初始化参数
Mar 22 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 session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
2010/12/29 PHP
PHP小偷程序的设计与实现方法详解
2016/10/15 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
2019/02/14 PHP
js中传递特殊字符(+,&)的方法
2014/01/16 Javascript
JavaScript获取并更改input标签name属性的方法
2015/07/02 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
Python模块学习 datetime介绍
2012/08/27 Python
详解Django缓存处理中Vary头部的使用
2015/07/24 Python
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
使用python实现简单五子棋游戏
2019/06/18 Python
python获取地震信息 微信实时推送
2019/06/18 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
师范生自我鉴定范文
2013/10/05 职场文书
酒店总经理欢迎词
2014/01/15 职场文书
商场中秋节活动方案
2014/02/07 职场文书
运动会广播稿20字
2014/02/18 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
七一慰问简报
2015/07/20 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
初三化学教学反思
2016/02/22 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
instantclient客户端 连接oracle数据库
2022/04/26 Oracle
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL