所以我在Python中创建了一个HTML解析器,我希望它能打印出div标签之间的所有信息,但似乎任何没有&符背后的空间的数据都没有。想要打印出来。解析器的代码是:
from HTMLParser import HTMLParser
class Parser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.dataArray = []
self.text = []
self.inLink = False
def handle_starttag(self, tag, attrs):
if tag == 'div':
self.inLink = True
self.lasttag = tag
def handle_data(self, data):
if self.lasttag == 'div' and self.inLink:
self.text.append(data)
def handle_entityref(self, name):
data = self.unescape('&')
self.text.append(data)
def handle_endtag(self, tag):
if tag == 'div':
self.inlink = False
self.dataArray.append("".join(self.text))
self.text = []
for i in self.dataArray:
if i == "":
self.dataArray.remove(i)
def time_to_parse(your_parser, text_to_parse):
parser = your_parser
decoded_text = parser.unescape(text_to_parse)
parser.feed(decoded_text)
unicode_data = your_parser.dataArray
string_data = [i.encode('utf-8') for i in unicode_data]
print(string_data)
time_to_parse(Parser(), '<div>ll"ll&mmmm</div>')
并打印'll"ll&'
。但是,如果我输入'<div>ll"ll& mmmm</div>'
作为要解析的文本(&符号后面的空格),则打印出'll"ll& mmmm'
罚款。我不明白为什么它处理引号和其他实体罚款而不是&符号,所以我坚持想法:(