• HTMLParser-实战


    了解了HTMLParser库的知识后,选择做一个小训练,对https://www.python.org/events/python-events/这个网址进行分析,之后输出其中每次会议的题目、时间和地点。


    如果要简单了解下HTMLParser库可以点击打开


    下面进入正题




    这是网站的源码,由此可以看出会议全部都是在ul下,而一个一个会议则是分开在一个一个li中


    整体的思路就是写一个继承了HTMLParser的类,并且重载方法,然后筛选出我们需要的date


    class MyHTMLParser(HTMLParser):
        flag = 0
        new = []
        get_data = 0
    
        def handle_starttag(self, tag, attrs):
            #判断该标签是否存在
            if tag == 'ul':
                for attr in attrs:
                    if re.match("list-recent-events menu",attr[1]):
                        self.flag = 1
            #处理a元素
            if tag == 'a' and self.flag == 1:
                self.get_data = 'tittle'
            #处理time元素
            if tag == 'time' and self.flag == 1:
                self.get_data = 'time'
            #处理span元素
            if tag == 'span' and self.flag == 1:
                self.get_data = 'addr'
    
        #当处理尾标签时则初始flag
        def handle_endtag(self, tag):
            if self.flag == 1 and tag == 'ul':
                self.flag = 0
    
        #对data的处理
        def handle_data(self, data):
            if self.get_data and self.flag == 1:
                #如果找到了题目,则新建一个dict来保存
                if self.get_data == 'tittle':
                    self.new.append({self.get_data : data})
                #如果找到了时间或者地点,则取出new这个list最后一个dict,然后添加键值
                else:
                    self.new[len(self.new)-1][self.get_data] = data
                self.get_data = None


    全部的代码在这里


    如果有问题可以及时问我


  • 相关阅读:
    css 图片的无缝滚动
    有时间研究下这个
    js的类数组对象
    js的this什么时候会出现报错
    js前端分页
    js队列
    js前端处理url中的参数为对象
    随机看的一点代码
    js的callee和caller方法
    js的Object和Function
  • 原文地址:https://www.cnblogs.com/GF66/p/9785492.html
Copyright © 2020-2023  润新知