Python urllib 库提供了一个从指定的 URL 地址获取网页数据,然后对其进行分析处理,获取想要的数据。

下面是在 Python Shell 里的 urllib 的使用情况:

01 Python 2.7.5 (default, May 15 201322:44:16) [MSC v.1500 64 bit (AMD64)] on win32
02 Type "copyright""credits" or "license()" for more information.
03 >>> import urllib
04 >>> google = urllib.urlopen('http://www.google.com')
05 >>> print 'http header:\n',google.info()
06 http header:
07 Date: Wed, 30 Oct 2013 03:11:44 GMT
08 Expires: -1
09 Cache-Control: private, max-age=0
10 Content-Type: text/html; charset=Big5
11 Set-Cookie: PREF=ID=7ee0cbd58be6fb74:FF=0:NW=1:TM=1383102704:LM=1383102704:S=w6DoLuUBc7KUOE69; expires=Fri, 30-Oct-2015 03:11:44 GMT; path=/; domain=.google.com.hk
12 Set-Cookie: NID=67=cNyh4vZeoDJFnSe12viwoMNh47Hjq98F72I6TTNZGBuJx78aRgQbAA-RtGNFFpARCaN3zJ6OYIpJASB3Q7cmfyRguFh6epcBOSL930KEfIxUa-85e946hE97WfP0lgk7; expires=Thu, 01-May-2014 03:11:44 GMT; path=/; domain=.google.com.hk; HttpOnly
13 P3P: CP="This is not a P3P policy! Seehttp://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657for more info."
14 Server: gws
15 X-XSS-Protection: 1; mode=block
16 X-Frame-Options: SAMEORIGIN
17 Alternate-Protocol: 80:quic
18  
19 >>> print 'http status:',google.getcode()
20 http status: 200
21 >>> print 'url:',google.geturl()
22 url: http://www.google.com.hk/
23 >>>

上面主要用到了 urllib 库里的 urlopen() 函数。我们可以了解一下这个函数。

继续使用 Python Shell:

1 >>> help(urllib.urlopen)
2 Help on function urlopen in module urllib:
3  
4 urlopen(url, data=None, proxies=None)
5     Create a file-like object for the specified URL to read from.

即创建一个类文件对象为指定的 url 来读取。

详细点就是,创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。参数url表示远程数据的路径,一般是网址;参数data表示以post方式提交到url的数据(玩过web的人应该知道提交数据的两种方式:post与get。如果你不清楚,也不必太在意,一般情况下很少用到这个参数);参数proxies用于设置代理(这里不详细讲怎么使用代理,感兴趣的看客可以去翻阅Python手册urllib模块)。urlopen返回 一个类文件对象,他提供了如下方法:

  • 参数 url 表示远程数据的路径,一般是 http 或者 ftp 路径。
  • 参数 data 表示以 get 或者 post 方式提交到 url 的数据。
  • 参数 proxies 表示用于代理的设置。

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

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

再看一个例子,这个例子把Google首页的html抓取下来并显示在控制台上:

1 # 别惊讶,整个程序确实只用了两行代码 
2 import urllib 
3 print urllib.urlopen('http://www.google.com').read()

再运行一下这个例子,以加深对urllib的印象:

1 google = urllib.urlopen('http://www.google.com'
2 print 'http header:/n', google.info() 
3 print 'http status:', google.getcode() 
4 print 'url:', google.geturl() 
5 for line in google: # 就像在操作本地文件 
6     print line, 
7 google.close() 

【py网页】urllib模块,urlopen的更多相关文章

  1. Python基础之 urllib模块urlopen()与urlretrieve()的使用方法详解。

    Python urllib模块urlopen()与urlretrieve()的使用方法详解   1.urlopen()方法urllib.urlopen(url[, data[, proxies]]) ...

  2. Python urllib模块urlopen()与urlretrieve()详解

    1.urlopen()方法urllib.urlopen(url[, data[, proxies]]) :创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据.参数u ...

  3. python urllib模块的urlopen()的使用方法及实例

    Python urllib 库提供了一个从指定的 URL 地址获取网页数据,然后对其进行分析处理,获取想要的数据. 一.urllib模块urlopen()函数: urlopen(url, data=N ...

  4. 【py网页】urlopen的补充,完美

    urllib 是 python 自带的一个抓取网页信息一个接口,他最主要的方法是 urlopen(),是基于 python 的 open() 方法的.下面是主要说明: 1 urllib.urlopen ...

  5. 定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容。提示(可以了解python的urllib模块)

    定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容.提示(可以了解python的urllib模块) import urllib.request def get_ ...

  6. 【py网页】urllib.urlretrieve远程下载

    下面我们再来看看 urllib 模块提供的 urlretrieve() 函数.urlretrieve() 方法直接将远程数据下载到本地. 1 >>> help(urllib.urlr ...

  7. 12月4日学习爬虫007.使用Urllib模块进行简单网页爬取

    笔记如下: 1.https是http加强版协议(安全协议)http(普通网络通信协议) 爬数据 如果爬https发现和理想中的数据不同,可以改为http 直接去掉s即可 2.使用Urllib爬取简单网 ...

  8. 全局变量 urllib模块 json模块

    1.vars()  查看一个.py文件中的全局变量 print(vars()) #重点 __name__': '__main__ '__file__': 'C:/Users/lenovo/Pychar ...

  9. Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块

    Python第十三天   django 1.6   导入模板   定义数据模型   访问数据库   GET和POST方法    SimpleCMDB项目   urllib模块   urllib2模块 ...

随机推荐

  1. 【SQL Server】左联接,右联接,内联接的比较

    首先需要解释一下这几个联接的意思: left join(左联接): 返回包括左表中的所有记录和右表中联结字段相等的记录. right join(右联接): 返回包括右表中的所有记录和左表中联结字段相等 ...

  2. 371. Sum of Two Integers

    不用加减法计算两个整数的和.这道题其实是考察一些基本的布尔代数知识.我们知道,二进制表示时: 0 + 0 = 00 1 + 0 = 01 0 + 1 = 01 1 + 1 = 10 所以,两个二进制整 ...

  3. ecshop transport.js 和 jquery 冲突解决办法

    您提供一个简单的解决transport.js 和 jquery 方法: 在 page_header.lbi 库文件中加入如下代码,注意操作顺序: 1.先导入transport.js  文件 {inse ...

  4. Marshal.SecureStringToBSTR

    Marshal.StringToBSTR 方法 命名空间:System.Runtime.InteropServices程序集:mscorlib(在 mscorlib.dll 中) // 使用一个Int ...

  5. mysql 授权 user@'%' 为什么登陆的时候localhost 不行呢???

    公司业务服务器还没迁移到阿里云上的时候,创建的一个用户明明是所有的,但是本机登陆就是不行,一直也搞不懂原因 今天才知道 原来 %不包括 localhost mysql> grant all on ...

  6. Strawberry Perl CPAN Install Module 安装 Module 方法

    我在 Windows 上用的是 Strawberry Perl. 安装好 Strawberry Perl 之后, 打开 CMD, 输入 CPAN <Module_Name> 即可安装你想要 ...

  7. 查看oracle数据库中的保留字

    SQL> select * from v$reserved_words;

  8. 使用UDEV绑定ASM多路径磁盘

    OS版本:RHEL6.4 1) 找出目标磁盘的分区别名 # dmsetup ls |grep data data01 (253:9) data04 (253:4) data03 (253:3) dat ...

  9. duplicate命令创建physical standby数据库报RMAN-03015 ORA-17628

    The following error is reported trying to create a Physical Standby database using "duplicate f ...

  10. 移动端<head>头部 常用<meta>标签

    <!DOCTYPE html><html lang = ""><head> <title></title> <me ...