您好我使用以下python解析器来读取html文件
https://docs.python.org/2/library/htmlparser.html
class MyHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.inLink = False
self.dataArray = []
self.countLanguages = 0
self.lasttag = None
self.lastname = None
self.lastvalue = None
def handle_starttag(self, tag, attrs):
self.inLink = False
if tag == 'window':
for name, value in attrs:
if name == 'mode':
#value = 0
#print(value)
self.countLanguages += 1
self.inLink = True
self.lasttag = tag
def handle_endtag(self, tag):
if tag == "window":
self.inlink = False
def handle_data(self, data):
self.data = data
#print(self.data)
print data
if data.strip():
self.inlink = False
#print data
parser = MyHTMLParser()
input_file = open('xmlfile.xml')
feed_data = input_file.read().strip()
feed_data = parser.feed(feed_data)
print(feed_data.data)
input_file.close()
但是,我似乎找不到将html解析器返回的数据转换为字符串的方法。
我基本上使用html解析器来修饰属性,然后我想将数据转换为字符串 - 任何想法如何做到这一点?
我已尝试添加" self.data"到" handle_data"功能,但我似乎无法打印任何数据回来。有没有办法只打印解析器中的所有内容?
答案 0 :(得分:0)
这是另一种可能适合您对此特定问题的需求的方式:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import urllib.request
url = "http://www.google.com"
with urllib.request.urlopen(url) as response:
html = response.read().decode('utf-8')
print (html)
答案 1 :(得分:0)
阅读完源代码后,我发现feed()
函数没有返回任何内容。
def feed(self, data): r"""Feed data to the parser. Call this as often as you want, with as little or as much text as you want (may include '\n'). """ self.rawdata = self.rawdata + data self.goahead(0)
所以我们可以把它重写为:
# -*- coding=utf-8 -*-
from HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.Myrawdata = ""
def feed(self, data):
self.rawdata = self.rawdata + data
self.Myrawdata = self.Myrawdata + data
self.goahead(0)
# your code...
parser = MyHTMLParser()
parser.feed('<div><style type="text/css">#python { color: green }</style></div>')
print "Rawdata:", parser.Myrawdata
不使用self.rawdata
的原因是feed()
结束时它将为空。