博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【py分析】使用SGMLParser分析淘宝html
阅读量:5897 次
发布时间:2019-06-19

本文共 1145 字,大约阅读时间需要 3 分钟。

SGMLParser

Python 默认自带 HTMLParser 以及 SGMLParser 等等解析器,前者实在是太难用了,我就用 SGMLParser 写了一个示例程序:

import urllib2from sgmllib import SGMLParser class ListName(SGMLParser):	def __init__(self):		SGMLParser.__init__(self)		self.is_h4 = ""		self.name = []	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:			self.name.append(text) content = urllib2.urlopen('http://list.taobao.com/browse/cat-0.htm').read()listname = ListName()listname.feed(content)for item in listname.name:	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_preattrs 为标签的参数,以 [(attribute, value), (attribute, value), ...] 的形式传回。

输出:

虚拟票务数码市场家电市场女装市场男装市场童装童鞋女鞋市场男鞋市场内衣市场箱包市场服饰配件珠宝饰品美容市场母婴市场家居市场日用市场食品/保健运动鞋服运动户外汽车用品玩具市场文化用品市场爱好市场生活服务

如果有乱码,可能是与网页编码不一致,需要替换最后一句 deconde() 的参数,我在香港淘宝默认用的是繁体编码。各位可以 copy 上面的代码自己试试,把淘宝的商品目录抓下来,就是这么简单。稍微改改,就可以抽取二级分类等其他信息

转载地址:http://sdxsx.baihongyu.com/

你可能感兴趣的文章
安装gulp及相关插件
查看>>
如何在Linux用chmod来修改所有子目录中的文件属性?
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
笔记:认识.NET平台
查看>>
cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
查看>>
gitlab 完整部署实例
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
struts中的xwork源码下载地址
查看>>
我的友情链接
查看>>
PHP 程序员的技术成长规划
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
js replace,正则截取字符串内容
查看>>
javascript继承方式详解
查看>>
lnmp环境搭建
查看>>
自定义session扫描器精确控制session销毁时间--学习笔记
查看>>
仿射变换
查看>>
视频直播点播nginx-rtmp开发手册中文版
查看>>
PHP队列的实现
查看>>
单点登录加验证码例子
查看>>
[T-SQL]从变量与数据类型说起
查看>>