- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
python提取html当中信息
SGMLParser
Python 默认自带 HTMLParser 以及 SGMLParser 等等解析器,前者实在是太难用了,我就用 SGMLParser 写了一个示例程序:
import urllib2
from sgmllib import SGMLParser
?
class ListName(SGMLParser):
def __init__(self):
SGMLParser.__init__(self)
self.is_h4 =
= []
def start_h4(self, attrs):
self.is_h4 = 1
def end_h4(self):
self.is_h4 =
def handle_data(self, text):
if self.is_h4 == 1:
.append(text)
?
content = urllib2.urlopen(/browse/cat-0.htm).read()
listname = ListName()
listname.feed(content)
for item in :
print item.decode(gbk).encode(utf8)很简单,这里定义了一个叫做?ListName?的类,继承?SGMLParser?里面的方法。使用一个变量?is_h4?做标记判定 html 文件中的?h4?标签,如果遇到?h4?标签,则将标签内的内容加入到?List?变量?name?中。解释一下?start_h4()?和?end_h4()?函数,他们原型是 SGMLParser 中的
start_tagname(self, attrs)end_tagname(self)
tagname?就是标签名称,比如当遇到?pre,就会调用?start_pre,遇到?/pre,就会调用end_pre。attrs?为标签的参数,以?[(attribute, value), (attribute, value), ...]?的形式传回。
输出:
虚拟票务
数码市场
家电市场
女装市场
男装市场
童装童鞋
女鞋市场
男鞋市场
内衣市场
箱包市场
服饰配件
珠宝饰品
美容市场
母婴市场
家居市场
日用市场
食品/保健
运动鞋服
运动户外
汽车用品
玩具市场
文化用品市场
爱好市场
生活服务
如果有乱码,可能是与网页编码不一致,需要替换最后一句?deconde()?的参数,我在香港淘宝默认用的是繁体编码。各位可以 copy 上面的代码自己试试,把淘宝的商品目录抓下来,就是这么简单。稍微改改,就可以抽取二级分类等其他信息
python的SGMLParser模块处理html解析非常的方便,它是处理网页解析的好帮手,能够将HTML 处理分成三步:将 HTML 分解成它的组成片段,对片段进行加工,接着将片段再重新合成 HTML。第一步是通过 sgmllib.py 来完成的,它是标准 Python 库的一部分。理解本章的关键是要知道 HTML 不只是文本,更是结构化文本。这种结构来源于开始与结束标记的或多或少分级序列。通常您并不以这种方式处理 HTML ,而是以文本方式 在一个文本编辑中对其进行处理,或以可视的方式 在一个浏览器中进行浏览或页面编辑工具中进行编辑。sgmllib.py 表现出了 HTML 的结构。sgmllib.py 包含一个重要的类:SGMLParser。SGMLParser 将 HTML 分解成有用的片段,比如开始标记和结束标记。在它成功地分解出某个数据为一个有用的片段后,它会根据所发现的数据,调用一个自身内部的方法。为了使用这个分析器,您需要子类化 SGMLParser 类,并且覆盖这些方法。这就是当我说它表示了 HTML 结构 的意思:HTML 的结构决定了方法调用的次序和传给每个方法的参数。SGMLParser 将 HTML 分析成 8 类数据,然后对每一类调用单独的方法:开始标记 (Start tag)是开始一个块的 HTML 标记,像 、、 或
等,或是一个独一的标记,像 或 等。当它找到一个开始标记 tagname,SGMLParser 将查找名为 start_tagname 或 do_tagname 的方法。例如,当它找到一个
标记,它将查找一个 start_pre 或 do_pre 的方法。如果找到了,SGMLParser 会使用这个标记的属性列表来调用这个方法;否则,它用这个标记的名字和属性列表来调用 unknown_starttag 方法。 结束标记 (End tag) 是结束一个块的 HTML 标记,像 、、 或
等。当找到一个结束标记时,SGMLPa
文档评论(0)