博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTMLParser-实战
阅读量:4308 次
发布时间:2019-06-06

本文共 1309 字,大约阅读时间需要 4 分钟。

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

如果要简单了解下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

全部的代码

如果有问题可以及时问我

转载于:https://www.cnblogs.com/GF66/p/9785492.html

你可能感兴趣的文章
mahout贝叶斯算法开发思路(拓展篇)1
查看>>
《Two Dozen Short Lessons in Haskell》学习(十)- Private Definitions — the where-clause
查看>>
vue axios
查看>>
avl树
查看>>
Android开源库loopj的android-async-http的 JsonHttpResponseHandler 存在死循环GC_CONCURRENT
查看>>
第四次作业
查看>>
Android Studio如何导出可供Unity使用的aar插件详解
查看>>
NPY and girls
查看>>
我所遭遇过的中间件--VTK
查看>>
文件夹生成工具
查看>>
表驱动法——直接访问表示例1
查看>>
缓存更新的套路
查看>>
Git 初识
查看>>
[转帖]好技术领导,差技术领导
查看>>
Hibernate的检索策略
查看>>
十.Protobuf3 JSON映射
查看>>
十五.ProtoBuf3的基础总结
查看>>
十二.Protobuf3编码
查看>>
HTTP的幂等性
查看>>
十三.Java使用Protobuf3
查看>>