`
qindongliang1922
  • 浏览: 2147483 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:116328
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:124593
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:58457
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:70354
社区版块
存档分类
最新评论

Python3.4网页解析之HTMLParse

阅读更多
使用python将网页抓取下来之后,下一步我们就应该解析网页,提取我们所需要的内容了,在python里提供了一个简单的解析模块HTMLParser类,使用起来也是比较简单的,解析语法没有用到XPath类似的简洁模式,但新手用起来还是比较容易的,看下面的例子:


现在一个模拟的html文件:
<html> <title id='main' mouse='你好'>我是标题</title><body>我是内容</body>   </html>


需求是,提取出标题的属性值,以及内容:

代码如下:
import html.parser as h



class MyHTMLParser(h.HTMLParser):
    a_t=False
    def handle_starttag(self, tag, attrs):
        #print("开始一个标签:",tag)
        print()
        if str(tag).startswith("title"):
            print(tag)
            self.a_t=True
            for attr in attrs:
                print("   属性值:",attr)

    def handle_endtag(self, tag):
        if tag == "title":
            self.a_t=False
            #print("结束一个标签:",tag)

    def handle_data(self, data):
        if self.a_t is True:
            print("得到的数据: ",data)



p=MyHTMLParser()

p.feed("<html> <title id='main' mouse='你好'>我是标题</title><body>我是内容</body>   </html>")

p.close()


运行结果如下:

title
   属性值: ('id', 'main')
   属性值: ('mouse', '你好')
得到的数据:  我是标题



主要的技术就是继承了HTMLParser类,然后重写了里面的一些方法,来完成自己的业务,从上面的代码里,发现如果想获取某个标签的内容,还是比较麻烦的,当然这是python里面最简单的html解析方式,还有很多其他组件,scrapy等等,里面支持Xpath路径解析,使用起来非常简洁清爽。


解析代码学会之后,我们就可以将使用urllib包,抓取到的数据交给htmlparser解析,从而提取出我们所需要的内容。






分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics