利用Python抓取和解析网页(一)

                                                                                         

利用Python抓取和解析网页(一)

WebjxCom提示: 对搜索引擎、文件索引、文档转换、数据检索、站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理。事实上,通过Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览器就能够解析和处理HTML文档

  上述代码的执行结果如下所示:

  用Google搜索python时地址栏中URL的解析结果

  ( ' http ' ' www.google.com ' ' /search ' '' ,

  
' hl=en&q=python&btnG=Google+Search ' '' )

  反解析python文档页面的URL

  http:
// www.python.org / lib / module - urlparse.html

  利用拼接方式添加更多python文档页面的URL

  http:
// www.python.org / lib / module - urllib.html

  http:
// www.python.org / lib / module - urllib2.html

  http:
// www.python.org / lib / module - httplib.html

  http:
// www.python.org / lib / module - cgilib.html

  通过拼接子路径来生成Python文档页面的URL

  http:
// www.python.org / lib / module - urllib2 / request - objects.html

  二、打开HTML文档

  上面介绍了如何解析页面的URL,现在开始讲解如何通过URL打开一个网页。实际上,Python所带的urllib和urllib2这两个模块为我们提供了从URL打开并获取数据的功能,当然,这包括HTML文档。

   import  urllib

  u 
=  urllib.urlopen(webURL)

  u 
=  urllib.urlopen(localURL)

  buffer 
=  u.read()

  
print  u.info()

  
print   " 从%s读取了%d 字节数据.\n "   %  (u.geturl(),len(buffer) )

  若要通过urllib模块中的urlopen(url [,data])函数打开一个HTML文档,必须提供该文档的URL地址,包括文件名。函数urlopen不仅可以打开位于远程web服务器上的文件,而且可以打开一个本地文件,并返回一个类似文件的对象,我们可以通过该对象从HTML文档中读出数据。

  一旦打开了HTML文档,我们就可以像使用常规文件一样使用read([nbytes])、readline()和readlines()函数来对文件进行读操作。若要读取整个HTML文档的内容的话,您可以使用read()函数,该函数将文件内容作为字符串返回。

  打开一个地址之后,您可以使用geturl()函数取得被获取网页的真正的URL。这是很有用的,因为urlopen(或使用的opener对象)也许会伴随一个重定向。获取的网页URL也许和要求的网页URL不一样。

  另一个常用的函数是位于从urlopen返回的类文件对象中的info()函数,这个函数可以返回URL位置有关的元数据,比如内容长度、内容类型,等等。下面通过一个较为详细的例子来对这些函数进行说明。

   import  urllib

  webURL 
=   " http://www.python.org "

  localURL 
=   " index.html "

  
# 通过URL打开远程页面

  u 
=  urllib.urlopen(webURL)

  buffer 
=  u.read()

  
print  u.info()

  
print   " 从%s读取了%d 字节数据.\n "   %  (u.geturl(),len(buffer) )

  
# 通过URL打开本地页面

  u 
=  urllib.urlopen(localURL)

  buffer 
=  u.read()

  
print  u.info()

  
print   " 从%s读取了%d 字节数据.\n "   %  (u.geturl(),len(buffer) )

  上面代码的运行结果如下所示:

  Date: Fri,  26  Jun  2009   10 : 22 : 11  GMT

  Server: Apache
/ 2.2 . 9  (Debian) DAV / 2  SVN / 1.5 . 1  mod_ssl / 2.2 . 9  OpenSSL / 0.9 .8g mod_wsgi / 2.3  Python / 2.5 . 2

  Last
- Modified: Thu,  25  Jun  2009  0 9 : 44 : 54  GMT

  ETag: 
" 105800d-46e7-46d29136f7180 "

  Accept
- Ranges: bytes

  Content
- Length:  18151

  Connection: close

  Content
- Type: text / html

  从http:
// www.python.org读取了18151 字节数据.

  Content
- Type: text / html

  Content
- Length:  865

  Last
- modified: Fri,  26  Jun  2009   10 : 16 : 10  GMT

  从index.html读取了865 字节数据.

  三、小结

  对搜索引擎、文件索引、文档转换、数据检索、站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理。事实上,通过Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览器就能够解析和处理HTML文档。本文中,我们介绍了一个可以帮助简化打开位于本地和Web上的HTML文档的Python模块。在下篇中,我们将论述如何使用Python模块来迅速解析在HTML文件中的数据,从而处理特定的内容,如链接、图像和Cookie等。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值