【py分析】使用SGMLParser分析淘宝html
SGMLParser
Python 默认自带 HTMLParser 以及 SGMLParser 等等解析器,前者实在是太难用了,我就用 SGMLParser 写了一个示例程序:
很简单,这里定义了一个叫做 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 上面的代码自己试试,把淘宝的商品目录抓下来,就是这么简单。稍微改改,就可以抽取二级分类等其他信息