201211月7
用HTMLParser来抓取数据
起因
有时候测试代码需要大量的合法URL,而自己随机生成的又可能不存在,所以通常情况下会找一些包涵大量URL的页面去分析提取,HTMLParser就是这样一个页面分析工具,它是python的标准库,而且用起来很简单,所以在偶尔需要提取页面标签数据的时候很适合。
解决
通常HTMLParser都是与urllib一起使用,比如要提取百度首页上的所有URL:
# -*- coding: utf-8 -*- import urllib import HTMLParser class URLParser(HTMLParser.HTMLParser): def handle_starttag(self, tag, attrs): if tag == 'a': for name, value in attrs: if name == 'href' and value.startswith('http'): print >> f, value break with open('db.txt', 'w') as f: parser = URLParser() try: parser.feed( urllib.urlopen('http://www.baidu.com').read().decode('gbk') ) except HTMLParser.HTMLParseError, e: print e finally: parser.close()
但是因为一些页面的不规范,所以经常会遇到HTMLParser.HTMLParseError: malformed start tag错误,如果这样可以考虑re模块,或者使用BeautifulSoup来代替HTMLParser。
文章作者:
iitshare
本文地址:http://www.iitshare.com/python-htmlparser-data.html
版权所有 © 转载时必须以链接形式注明作者和原始出处!