概述
from html.parser import HTMLParser
from html.entities import name2codepoint
from urllib import request
import re
class MyHTML(HTMLParser):
def init(self):
self.__parsedata = ''
# 设置一个空状态
self.bj = '';
def handle_starttag(self, tag, attrs):
if ('class', 'event-title') in attrs:#获取class=event-title的属性名称
self.__parsedata = 'name'
# 设置爬取名称状态
if tag == 'time':
self.__parsedata = 'time'
if ('class', 'say-no-more') in attrs:
self.__parsedata = 'year'
if ('class', 'event-location') in attrs:
self.__parsedata = 'location'
if('title','More Events') in attrs:
for k,v in attrs:
if k == 'href':
self.bj = re.findall(r'd',v)[0]#获取分页数据
def handle_endtag(self, tag):
if tag == 'h3' or tag == 'span':#获取数据结束标记
self.__parsedata = ''
def handle_startendtag(self, tag, attrs):
'''print('<%s/>' % tag)'''
#tag:类似于这种<a/>,一个标签中含有结束符号
def handle_data(self, data):
with open('mytext.txt', 'a+') as f:#将内容写入mytext.txt文件中,a+不断往文件里面添加,不会覆盖原内容
if self.__parsedata == 'name':
print('会议名称:%s' % data)
f.write(data+'n')
if self.__parsedata == 'time':
print('会议时间:%s' % data)
f.write(data + 'n')
if self.__parsedata == 'year':
if re.match(r'sd{4}', data):
# 因为后面还有两组 say-no-more 后面的data却不是年份信息,所以用正则检测一下
print('会议年份:%s' % data.strip())
f.write(data.strip() + 'n')
if self.__parsedata == 'location':
print('会议地点:%s' % data)
f.write(data + 'nn')
f.close()
def handle_comment(self, data):
'''print('<!--', data, '-->')'''
def handle_entityref(self, name):
'''print('&%s;' % name)'''
def handle_charref(self, name):
'''print('&#%s;' % name)'''
parser = MyHTML()
parser.init()
flag = ''#退出查询标记
while True:
if parser.bj == '':
with request.urlopen('https://www.python.org/events/python-events/') as f:
data = f.read()
req = data.decode('utf-8')
parser.feed(req)
else:
if flag != parser.bj:
with request.urlopen('https://www.python.org/events/python-events/?page='+parser.bj) as f:
flag = parser.bj
data = f.read()
req = data.decode('utf-8')
parser.feed(req)
else:
exit()
最后
以上就是重要天空为你收集整理的python 解析html代码,获取所需数据的全部内容,希望文章能够帮你解决python 解析html代码,获取所需数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复