python3 解析html
2014-04-27 11:36
344 查看
解析html模块 html.parser.HTMLParser
a).要自己实现一个HTMLParser的子类对自己所需要的标签进行处理
class MyHTMLParser(HTMLParser):
def __init__(sefl):
HTMLParser.__init__(sefl):
//...自定义初始化方法,可以进行一些初始化
def handle_starttag(self,tag,attrs):
//...
def handle_endtag(self,tag):
//...
def handle_data(self,data):
//....
def handle_entityref(self,name):
//处理实体
class ParserHTML(HTMLParser):
"""
解析html页面
字典interestTag 对哪些标签进行解析 {"要查找的标签":{"根据属性再次过滤标签":"对应属性的值","MATCH_ATTR":"要得到的属性"}}
"""
def __init__(self,interestTag={}):
HTMLParser.__init__(self)
self.interestTag = interestTag
def handle_starttag(self, tag,attrs):
#处理标签 tag是标签 attrs是标签内的属性
if {} == self.interestTag:
print("return")
return
for targetTag,value in self.interestTag.items():
if tag == targetTag:
for targetTagAttrName,targetTagAttrValue in value.items():
if "MATCH_ATTR" != targetTagAttrName:
matchAttr = value.get("MATCH_ATTR","")
if "" == matchAttr:
raise RuntimeError("要匹配的属性不能为空")
for attr in attrs:
#attr包含属性的元组 (属性名,属性值)
if targetTagAttrName == attr[0] and targetTagAttrValue == attr[1]:
for tr in attrs:
if matchAttr == tr[0]:
#这里取得标签里指定属性的值
download4Urllib(tr[1],tr[1][tr[1].rfind('/')+1:],"G:/image")
测试:parser = ParserHTML({"img":{"class":"BDE_Image","MATCH_ATTR":"src"}})
parser.feed('<div id="post_content_48081892290" class="d_post_content j_d_post_content "> <img class="BDE_Image" id="img" src="http://imgsrc.baidu.com/forum/w%3D580/sign=c699c69638f33a879e6d0012f65d1018/4fd2c6faaf51f3dea72ffcc296eef01f3b29793f.jpg"
pic_ext="jpeg" width="541" height="750" data-pinit="registered" style="cursor: url(http://tb2.bdstatic.com/tb/static-pb/img/cur_zin.cur), pointer;"></div>')
a).要自己实现一个HTMLParser的子类对自己所需要的标签进行处理
class MyHTMLParser(HTMLParser):
def __init__(sefl):
HTMLParser.__init__(sefl):
//...自定义初始化方法,可以进行一些初始化
def handle_starttag(self,tag,attrs):
//...
def handle_endtag(self,tag):
//...
def handle_data(self,data):
//....
def handle_entityref(self,name):
//处理实体
class ParserHTML(HTMLParser):
"""
解析html页面
字典interestTag 对哪些标签进行解析 {"要查找的标签":{"根据属性再次过滤标签":"对应属性的值","MATCH_ATTR":"要得到的属性"}}
"""
def __init__(self,interestTag={}):
HTMLParser.__init__(self)
self.interestTag = interestTag
def handle_starttag(self, tag,attrs):
#处理标签 tag是标签 attrs是标签内的属性
if {} == self.interestTag:
print("return")
return
for targetTag,value in self.interestTag.items():
if tag == targetTag:
for targetTagAttrName,targetTagAttrValue in value.items():
if "MATCH_ATTR" != targetTagAttrName:
matchAttr = value.get("MATCH_ATTR","")
if "" == matchAttr:
raise RuntimeError("要匹配的属性不能为空")
for attr in attrs:
#attr包含属性的元组 (属性名,属性值)
if targetTagAttrName == attr[0] and targetTagAttrValue == attr[1]:
for tr in attrs:
if matchAttr == tr[0]:
#这里取得标签里指定属性的值
download4Urllib(tr[1],tr[1][tr[1].rfind('/')+1:],"G:/image")
测试:parser = ParserHTML({"img":{"class":"BDE_Image","MATCH_ATTR":"src"}})
parser.feed('<div id="post_content_48081892290" class="d_post_content j_d_post_content "> <img class="BDE_Image" id="img" src="http://imgsrc.baidu.com/forum/w%3D580/sign=c699c69638f33a879e6d0012f65d1018/4fd2c6faaf51f3dea72ffcc296eef01f3b29793f.jpg"
pic_ext="jpeg" width="541" height="750" data-pinit="registered" style="cursor: url(http://tb2.bdstatic.com/tb/static-pb/img/cur_zin.cur), pointer;"></div>')
相关文章推荐
- python3 解析json数据
- python 中文编码问题
- python3 解析xml文件
- python实现sublime3的less编译插件示例
- 转载:Ubuntu 12.04下安装配置Python 2.7集成开发环境Eric4
- ubuntu 13.10 下在eclipse下搭建python开发环境
- Python基础(4)--字符串
- 安装和使用python的setup tools
- python学习之 ―― 条件和循环
- python实现sublime3的less编译插件示例
- python抓取网页图片示例(python爬虫)
- python监控网卡流量并使用graphite绘图的示例
- Python读写文件
- A collection of not-so-obvious Python stuff you should know
- python2.7完成curd
- python2.7发送邮件
- python2.7采集图片
- Python入门教程-07 列表list
- [转]构建Python+Selenium2自动化测试环境(二)
- [转]构建Python+Selenium2自动化测试环境(一)