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


全部的代码在这里


如果有问题可以及时问我


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值