因为最新版的lxml已经没有了etree,但是html子包还是可以用,在这个包的使用中,发现了一个有趣的编程现象,这严格来说应该是一个故意的BUG
首先是示例HTML,这里使用字符串的测试方式(正规的HTML文件应该没有这种BUG)
注意以下的代码段,其中的第一个h2标签没有闭合的斜杠
data = '''
<html>
<head>
<title>My page</title>
</head>
<body>
<h2>Welcome to my page<h2>
<a href="www.example.com">page</a>
<p>This is the first paragraph</p>
<h2>Hello World</h2>
</body>
</html>
'''
当运行以下代码时候
tree = html.fromstring(data)
booknames = tree.xpath('//h2/text()')
print(booknames)
输出的内容变得不正确,具体的输出为
['Welcome to my page', '\n ', '\t\n ', 'Hello World']
这个输出告诉我们,不规范的HTML的XPATH语句可能会有意想不到的问题
就这些,记录一下