#使用parser获取图片信息,输出Python官网发布的会议时间、名称和地点。
# !/usr/bin/env/Python3
# - * - coding: utf-8 - * -
from html.parser import HTMLParser
import urllib.request
#使用parser获取图片信息,输出Python官网发布的会议时间、名称和地点。
class MyHTMLParser(HTMLParser):
def __init__(self):
super().__init__()
self.li = False
self.h3 = False
self.a = False
self.p = False
self.time = False
self.span1 = False
self.span2 = False
self.event_dict = {}
self.count = 0
def handle_starttag(self, tag, attrs):
if tag == 'li':
self.li = True
elif tag == 'h3':
for k, v in attrs:
if k == 'class' and v == 'event-title':
self.h3 = True
elif tag == 'a':
self.a = True
elif tag == 'p':
self.p = True
elif tag == 'time':
self.time = True
elif tag == 'span':
for k, v in attrs:
if k == 'class' and v == 'say-no-more':
self.span1 = True
elif k == 'class' and v == 'event-location':
self.span2 = True
def handle_data(self, data):
if self.li:
if self.h3 == True and self.a == True:
self.count += 1 # 用self.count作为self.IDdict的key,表示会议的次数
self.event_dict[self.count] = {}
self.event_dict[self.count]['name'] = data
elif self.p:
if self.time:
if not self.span1:
self.event_dict[self.count]['time'] = data
else:
self.event_dict[self.count]['time'] += (',' + data)
else:
if self.span2:
self.event_dict[self.count]['site'] = data
def handle_endtag(self, tag):
if tag == 'a':
self.a = False
elif tag == 'h3':
self.h3 = False
elif tag == 'span':
self.span1 = False
self.span2 = False
elif tag == 'time':
self.time = False
elif tag == 'p':
self.p = False
elif tag == 'li':
self.li = False
parser = MyHTMLParser()
def parse_python_event(html_data):
global parser
parser = MyHTMLParser()
parser.feed(html_data)
return parser.event_dict
def Hocontent(url):
page = urllib.request.urlopen(url)
html = page.read()
return html
if __name__ == '__main__':
html_data = Hocontent('https://www.python.org/events/python-events/').decode(encoding="utf-8")
event = parse_python_event(html_data)
print('Conference: %s' % event)
for i in range(1, parser.count + 1):
print(event[i]['name'], '\n', event[i]['time'], '\t', event[i]['site'])
#使用parser获取图片信息,输出Python官网发布的会议时间、名称和地点。的更多相关文章
- python学习(解析python官网会议安排)
在学习python的过程中,做练习,解析https://www.python.org/events/python-events/ HTML文件,输出Python官网发布的会议时间.名称和地点. 对ht ...
- Python+Selenium学习笔记5 - python官网的tutorial - 交互模式下的操作
这篇笔记主要是从Python官网的Tutorial上截取下来,再加上个人理解 1. 在交互模式下,下划线'_'还可以表示上一步的计算结果 2.引号转义问题. 从下图总结的规律是,字符串里的引号如果和引 ...
- 今天去python官网下载包安装的时候的问题记录
去官网下载了 tar压缩包 放到了site-packages下解压 然后使用 python setup.py install 安装 安装完后,所要引用的模块文件居然还在解压出来的压缩文件里面,导致无法 ...
- python官网导航翻译
- 微服务实战系列--Nginx官网发布(转)
这是Nginx官网写的一个系列,共七篇文章,如下 Introduction to Microservices (this article) Building Microservices: Using ...
- python官网几个下载文件的区别
进入python官方,下载python编译器,提供了如下几个版本进行选择,这些版本分别是什么意思呢? Python 3.7.1 - 2018-10-20 Download Windows x86 we ...
- python官网
https://www.python.org/ https://docs.python.org/2/library/pydoc.html
- 获取Xshell Xftp等官网下载地址
1. 首先还是得填写邮箱获取试用链接地址,例如我这次获取的是: https://cdn.netsarang.net/c5711331/Xshell-6.0.0175.exe 关键需要记下 c57113 ...
- Python+Selenium学习笔记14 - python官网的tutorial - just() fill() format()
repr(x).rjust(n) 左侧空格填充,右侧列对齐,str()和repr()是一种输出,也可不用,直接x.rjust() repr(x).ljust(n) 右侧空格填充,左侧列对齐 rep ...
随机推荐
- Moving to Express 4
http://expressjs.com/guide/migrating-4.html Moving to Express 4 Overview Express 4 is a breaking cha ...
- CDN,你了解多少?
大家对CDN并不陌生,工作中或多或少都有所接触,最近也有人问到,在此对CDN相关概念和流程做下总结,希望还能对其他朋友也有所帮助. 一.什么是CDN 维基百科上是这样定义的: CDN:内容分发网络(C ...
- webp转png或jpg
在项目开发的过程中,遇到了一个问题,就是webp的图片,先解释一下webp是啥,webp是谷歌开发的一种旨在加快图片加载速度的图片格式.图片压缩体积大约只有JPEG的2/3,说白了就是省空间,特别对于 ...
- 手机自动化测试:appium源码分析之bootstrap八
手机自动化测试:appium源码分析之bootstrap八 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣, ...
- user-modify属性,让html标签可以编辑
其实这只是一个很小的需求,但是写着写着发现干货越来越多,所以特意给大家分享一下. 项目需要做一个类似QQ聊天输入的效果 有的同学说,这不是很简单吗?一开始我也这么感觉 :) 观察需求 1.整体固定在底 ...
- memcached的安装以及php两个扩展软件安装(memcache、memcached)
百度云安装包:http://pan.baidu.com/s/1pKZeDwn k3ap 1.安装memcached Memcached是基于libevent的事件处理,所以它的安装依赖libeven ...
- 1094:零起点学算法01——第一个程序Hello World!
Description 题目很简单 输出"Hello World!"(不含引号),并换行. Input 没有输入 Output 输出"Hello World!" ...
- Angular.js学习笔记 (一)
- angular中最重要的概念是指令(directive)- ng-model 是双向数据绑定的指令,效果就是将当前元素的value属性和模型中的[user.name]建立绑定关系### 模块(Mo ...
- Python中字符串拼接的三种方式
在Python中,我们经常会遇到字符串的拼接问题,在这里我总结了三种字符串的拼接方式: 1.使用加号(+)号进行拼接 加号(+)号拼接是我第一次学习Python常用的方法,我们只需要把我们要加 ...
- AngularJS学习笔记3
6.AngularJS 控制器 AngularJS 控制器 控制 AngularJS 应用程序的数据. AngularJS 控制器是常规的 JavaScript 对象. ng-controller 指 ...