urllib 模块学习

urllib.urlopen('网址'):这里传入urlopen()的参数有特别说要求,要遵循一些网络协议,比如http,ftp。

也就是说,在网址的开头必须要有http://这样的说明,如:urllib.urlopen('http://www.baidu.com')。

要么就是本地文件,本地文件需要使用file关键字,比如urllib.urlopen('file:hello.py')。

注意,这里的hello.py是指的是当前的classpath所指定的内容,当然也可以直接写全部路径,urllib.urlopen('file:F:\pythontest\hello.py')。

#-*- coding:utf-8 -*-
import urllib

f = urllib.urlopen('http://www.baidu.com')
print f.read()
print f.info()
print f.getcode()

如果传入的参数正确,比如该网站可以访问,没有特殊情况(比如需要代理等),那么将返回一个类似于文件对象的对象。即上面代码中的f,f对象有的方法一些操作方法,使用dir(f):

>>> dir(f)
['__doc__', '__init__', '__iter__', '__module__', '__repr__', 'close', 'code', 'fileno', 'fp', 'getcode', 'geturl', 'headers', 'info', 'next', 'read', 'readline', 'readlines', 'url']

urlopen返回 一个类文件对象,他提供了如下方法:

  1. read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样;
  2. info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息;
  3. getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到;
  4. geturl():返回请求的url;

使用read()方法会将所有内容读取出来,并且不能返回重读,在使用f.read()将得不到任何数据,也就是说,得到的数据在这个时候如果想在后面进行任何处理操作的话,需要另外定义一个对象来进行存储

 

原文地址:https://www.cnblogs.com/Roger1227/p/3086329.html