Python——HTMLParser
来源:互联网 发布:java list 拼接字符串 编辑:程序博客网 时间:2024/06/05 15:01
from html.parser import HTMLParserfrom html.entities import name2codepointfrom urllib import requestclass MyHTMLParser(HTMLParser): def __init__(self): super(MyHTMLParser,self).__init__() self.tag='' self.flag_h3='' self.flag_a='' self.name='' self.flag_time='' self.time='' self.tmp='' self.flag_loc='' self.loc='' def handle_starttag(self, tag, attrs): self.tag=tag if self.tag=='h3' and attrs: for key,val in attrs: if key=="class" and val=='event-title': self.flag_h3=True if self.tag=='a' and self.flag_h3: self.flag_a=True if self.tag=='time' : self.flag_time=True self.tmp='' if self.tag=='span' and attrs: for key,val in attrs: if key=="class" and val=='event-location': self.flag_loc=True def handle_endtag(self, tag): if self.flag_h3 and self.flag_a: print('会议名称:',self.name) self.flag_a=False self.flag_h3=False if self.flag_time: print('会议时间:',self.time) self.flag_time=False if self.flag_loc: print('会议地点:',self.loc,'\n') self.flag_loc=False def handle_data(self, data): if self.flag_h3 and self.flag_a: self.name=data if self.flag_time: self.tmp+=data self.time=self.tmp if self.flag_loc: self.loc=data def handle_startendtag(self, tag, attrs): pass def handle_comment(self, data): pass def handle_entityref(self, name): pass def handle_charref(self, name): passwith request.urlopen('https://www.python.org/events/python-events/') as f: data=f.read()parser = MyHTMLParser()parser.feed(data.decode('utf-8'))
特殊字符有两种,一种是英文表示的
,一种是数字表示的Ӓ
(Ӓ),这两种字符都可以通过Parser解析出来。
feed()方法可以多次调用,也就是不一定一次把整个HTML字符串都塞进去,可以一部分一部分塞进去。
HTMLParser.close():当遇到文件结束标签后进行的处理方法。如果子类要复写该方法,需要首先调用HTMLParser类的close()
HTMLParser.reset():重置HTMLParser实例,该方法会丢掉未处理的html内容
HTMLParser.getpos():返回当前行和相应的偏移量
handle_startendtag 处理开始标签和结束标签
handle_starttag 处理开始标签,比如<xx>
handle_endtag 处理结束标签,比如</xx>
handle_charref 处理特殊字符串,就是以&#开头的,一般是内码表示的字符Ӓ
handle_entityref 处理一些特殊字符,以&开头的,比如
handle_data 处理数据,就是<xx>
data</xx>
中间的那些数据
handle_comment 处理注释
handle_decl 处理<!
开头的,比如<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
handle_pi 处理形如<?instruction>
的东西
阅读全文
0 0
- Python——HTMLParser
- python学习——HTMLParser
- python解析HTML的方法——HTMLParser
- python HTMLParser
- Python的自带模块——HTMLParser的初步学习
- Python使用HTMLParser.HTMLParser处理网页
- python模块之HTMLParser
- Python之HTMLParser
- python内置HTMLParser模块
- python模块之HTMLParser
- python模块之HTMLParser
- HTMLParser python usage
- python之htmlParser入门教程
- python的HTMLParser
- python HTMLParser 库 笔记
- Python基础 HTMLParser
- python爬虫之HTMLParser
- Python HTMLParser的使用例子
- iOS核心动画简介
- AsyncHttpClient和SmartImageView的综合使用--新闻客户端
- 广播接收者
- 想太多变神经病
- 将jsp内容导出为Excel表
- Python——HTMLParser
- 复合事件 2号的没发表出去补上的
- Spark RDD概念学习系列之RDD的转换图解
- [李景山php] linux 的进程组和会话
- Linux和win7双系统时间错误问题
- 【Linux】中管道的几种情况
- SDUT 1006-->Sum Problem
- Leetcode:Insert Delete GetRandom O(1)
- 大数据学习记录(day6)-图说Mapreduce工作机制