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. EntityFramework 7 Join Count LongCount 奇怪问题

    先吐槽一下,EF7 目前来说,真对的起现在的版本命名:"EntityFramework": "7.0.0-beta1". 这篇博文纪录一下:当 Linq 查询中 ...

  2. Ubuntu中Apache修改DocumentRoot(修改网站根目录)

    今天配置好Apache+PHP+MySQL但是apache默认DocumentRoot是/var/www想把它改到我Windows下进行测试的k:/wwwroot把 apache2.conf 翻了好几 ...

  3. Spring的DI(Ioc) - 注入集合类型

    1: 首先给service添加集合类型的属性,并提供getter, setter package cn.gbx.serviceimpl; import java.util.ArrayList; imp ...

  4. poj1420 拓扑序

    题意:给出一个表格,一部分单元格是给定的数字,而另一部分单元格则是一个式子,表示是其他一些单元格的和,让你输出最后计算出的所有格子的数. 因为有些格子需要其他格子先计算出来,所以计算顺序是按照拓扑序的 ...

  5. 理解bashrc和profile[转载]

    这儿有一篇文章不错 https://wido.me/sunteya/understand-bashrc-and-profile/ http://blog.csdn.net/luotuo44/artic ...

  6. MySQL防注入[待续]

    1.将输入的参数变成整数 $id = isset[$_GET['tid']]?$_GET['tid']+0:0; 可以防止:"*.php?tid=3 or 1"这样的语句.

  7. ASP.NET中Get和Post的用法

    单form的提交有两种方式,一种是get的方法,一种是post 的方法.看下面代码,理解ASP.NET Get和Post两种提交的区别: < form id="form1"  ...

  8. asp.net个人笔记

    1.进程外session一记 配置进程外session, 在webconfig中配置<sessionState timeout="60" mode="StateSe ...

  9. pdb 调试

    以前写python一直用pycharm,调试啥的比较方便,最近要在远程服务器上调试一些程序,只有一个控制台就可以用pdb进行调试了.常用的只有几个命令. break 或 b 设置断点 continue ...

  10. [android] 代码注册广播接收者&amp;利用广播调用服务的方法

    利用广播调用服务里面的方法,间接的方式调用服务内部的方法,与现实中差不多,请媒体曝光 主界面里面 在界面创建的时候开启一下服务普通的startService()方法 发送一条广播出去 获取Intent ...