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

  一、从HTML文档中提取链接

  Python语言还有一个非常有用的模块HTMLParser,该模块使我们能够根据HTML文档中的标签来简洁、高效地解析HTML文档。所以,在处理HTML文档的时候,HTMLParser是最常用的模块之一。

#!/usr/bin/python
import urllib, HTMLParserclass parseLinks(HTMLParser.HTMLParser):def handle_starttag(self,tag,attrs):if tag=='a':for name,value in attrs:if name=='href':print value,"\n", self.get_starttag_text()lParser = parseLinks()
lPurl = urllib.urlopen("http://www.winddesktop.com").read()
f = open('./hyplink.text','a')
f.write(lPurl)
f.close()
lParser.feed(lPurl)
lParser.close()
#f.write(lParser(lPurl))
#f.close()

处理HTML文档的时候,我们常常需要从其中提取出所有的链接。使用HTMLParser模块后,这项任务将变得易如反掌。首先,我们需要定义一个新的HTMLParser类,以覆盖handle_starttag()方法,我们将使用这个方法来显示所有标签的HRef属性值。

  定义好新的HTMLParser类之后,需要创建一个实例来返回HTMLParser对象。然后,就可以使用urllib.urlopen(url)打开HTML文档并读取该HTML文件的内容了。

  为了解析HTML文件的内容并显示包含其中的链接,可以使用read()函数将数据传递给HTMLParser对象。HTMLParser对象的feed函数将接收数据,并通过定义的HTMLParser对象对数据进行相应的解析。需要注意,如果传给HTMLParser的feed()函数的数据不完整的话,那么不完整的标签会保存下来,并在下一次调用feed()函数时进行解析。当HTML文件很大,需要分段发送给解析器的时候,这个功能就会有用武之地了。

二、从HTML文档中提取图像

  处理HTML文档的时候,我们常常需要从其中提取出所有的图像。使用HTMLParser模块后,这项任务将变得易如反掌。首先,我们需要定义一个新的HTMLParser类,以覆盖handle_starttag()方法,该方法的作用是查找img标签,并保存src属性值所指的文件。

#!/usr/bin/python/
#-*-coding:utf-8-*-
import HTMLParser
import urllib
import sys,urllib2,htmllib,formatter#urlString = "http://www.winddesktop.com"
urlString = "http://image.baidu.com"
def getimage(addr):u = urllib.urlopen(addr)data = u.read()splitPath = addr.split('/')fName = splitPath.pop()print "Saving %s" %fNamef = open("./image/"+fName,'wb')f.write(data)f.close()class parseImages(HTMLParser.HTMLParser):def handle_starttag(self,tag,attrs):if tag == 'img':for name,value in attrs:if name == 'src':getimage(urlString+"/"+value)lParser = parseImages()
u = urllib.urlopen(urlString)
print "Opening URL \n------"
print u.info()
lParser.feed(u.read())
lParser.close()

 三、从HTML文档中提取文本

  处理HTML文档的时候,我们常常需要从其中提取出所有的文本。使用HTMLParser模块后,这项任务将变得非常简单了。首先,我们需要定义一个新的HTMLParser类,以覆盖handle_data()方法,该方法是用来解析并文本数据的。

.....

http://blog.csdn.net/eting1987/article/details/6290428

python HTMLParser相关推荐

  1. python htmlparser怎么用,在Python中高效地使用HTMLParser

    作为对Python regular expression的响应,我尝试使用HTMLParser实现一个HTML解析器:import HTMLParser class ExtractHeadings(H ...

  2. python htmlparser怎么用_HTMLParser模块怎么在python中使用

    HTMLParser模块怎么在python中使用 发布时间:2021-02-09 09:29:29 来源:亿速云 阅读:82 作者:Leah 今天就跟大家聊聊有关HTMLParser模块怎么在pyth ...

  3. python htmlparser使用问题小结

    基于HTMLParser的反复使用的问题 from HTMLParser import HTMLParserclass MyHTMLParser(HTMLParser):data = []def ha ...

  4. python模块学习---HTMLParser(解析HTML文档元素)

    HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析. 本文主要简单讲一下HTMLParser的用法. 使用时需要定义一个从类HTMLParser继承的类,重定义 ...

  5. python模块之HTMLParser之穆雪峰的案例(理解其用法原理)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser之穆雪峰的案例(理解其用法原理) #http://www.cnblog ...

  6. python解析html模块_Python HTMLParser模块解析html获取url实例

    HTMLParser是python用来解析html的模块.它可以分析出html里面的标签.数据等等,是一种处理html的简便途径.HTMLParser采用的是一种事件驱动的模式,当HTMLParser ...

  7. Python urllib与requests、XML和HTMLParser

    Python 的内建模块urllib提供了一系列用于操作url的方法 Get urllib的request可以非常方便的抓取URL的内容,通过GET发送一个请求到指定页面,然后返回HTTP响应 还可以 ...

  8. python中html.parser_在Python中使用HTMLParser解析HTML的教程

    如果我们要编写一个搜索引擎,第一步是用爬虫把目标网站的页面抓下来,第二步就是解析该HTML页面,看看里面的内容到底是新闻.图片还是视频. 假设第一步已经完成了,第二步应该如何解析HTML呢? HTML ...

  9. python解析html的库_python自带的用于解析HTML的库HtmlParser

    HtmlParser,顾名思义,是解析Html的一个工具.python自带的. 一.常用属性和方法介绍 HtmlParser是一个类,在使用时一般继承它然后重载它的方法,来达到解析出需要的数据的目的. ...

最新文章

  1. 智能改变未来,创新引领世界,第二届深圳国际人工智能展暨智能制造创新高峰论坛盛大启幕!
  2. java请求慢_为什么重复的GET请求变慢了?
  3. Python 基础三:基础数据类型和字符串的常用函数操作
  4. 使用 EclEmma 来显示代码覆盖率
  5. python设计一个验证用户密码程序出入小区卡_自助餐取菜顺利为_______。
  6. Java15-day06【Set、HashSet、LinkedHashSet、TreeSet、Comparable、Comparator、泛型类、可变参数的使用】
  7. 光纤收发器通常具有哪些特点?
  8. 计算机程序员能做多久,这个行业有年龄限制吗?
  9. Docker加入裁员大军,关键时期Docker将何去何从?
  10. 字符串处理 BestCoder Round #43 1001 pog loves szh I
  11. HashTable,HashMap和ConcurrentHashMap的区别?
  12. css引用 svg图标库,svg 图标文件引入小技巧
  13. exsi 安装ipmi_在vSphere中为不同服务器配置IPMI功能
  14. python存根文件_打包存根文件
  15. 9. DICOM图像显示-DCMTK-窗宽窗位调整和源码分析
  16. 掌握算法本质背后的计算思维,尽在吴军博士《计算之魂》这本书中
  17. 计算机应用技术视频剪辑,万能的剪辑、合并视频、音频的技术 爱剪辑使用教程...
  18. python的秘密_Shamir秘密共享方案 (Python)
  19. linux 查看网络流量来源_linux中查看网卡流量六种方法
  20. 周期活动计算,三天一次活动

热门文章

  1. stream銆俠oxed_电脑关机时显示OX100672ed指令引用的OX0000000C内存,该内存不能为written是什么意思...
  2. “钱多多”软件用户调查问卷的调查报告
  3. 超级码力在线编程大赛初赛 第2场 T1-T4题解
  4. 终于有人把红蓝对抗讲明白了
  5. 关于调用阿里云短信服务接口实现短信验证码的过程
  6. 最差的算法工程师能差到什么程度呢?
  7. h5移动端调试工具vConsole
  8. CAD常见的20个问答
  9. C#基于NAudio的声音识别(二)——MFCC+SVM/BP
  10. poj 4084:拓扑排序