首页 > Python > 用HTMLParser来抓取数据
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
版权所有 © 转载时必须以链接形式注明作者和原始出处!

更多
本文目前尚无任何评论.

发表评论