python - lxml.etree为什么会自动加上加上</i>?
问题描述
正在学习lxml,代码如下:
from lxml import etreetext = ’’’<i class='cell maincell'> <p class='title'><a target='_blank' href='https://itjuzi.com/company/60321'> <span>洋鼹鼠</span></a> </p> <p><span class='tags t-small c-gray-aset'> <a href='https://itjuzi.com/investevents?scope=145'>电子商务</a></span><span class='loca c-gray-aset t-small'> <a href='https://itjuzi.com/investevents?prov=天津'>天津</a></span> </p></i>’’’html = etree.HTML(text)print(etree.tostring(html,encoding=’utf-8’).decode(’utf-8’))
输出如下:
<html><body><i class='cell maincell'> </i><p class='title'><a target='_blank' href='https://itjuzi.com/company/60321'> <span>洋鼹鼠</span></a> </p> <p><span class='tags t-small c-gray-aset'> <a href='https://itjuzi.com/investevents?scope=145'>电子商务</a></span><span class='loca c-gray-aset t-small'> <a href='https://itjuzi.com/investevents?prov=天津'>天津</a></span> </p></body></html>
主要不理解为什么<i>标签那里会出错呢?请问怎么解决这个问题?谢谢~
问题解答
回答1:主要是因为
p元素内容分类 Flow content, palpable content.允许的内容 Phrasing content.允许的父元素任何接受flow content的元素
i元素Content catergories Flow content, phrasing content, palpable content.允许量 phrasing content.
很显然P元素的父元素应该是flow content类型的,然而i并不满足条件,也就是说这是不符合规范的。解决办法就是i直接换为p。
相关文章:
1. html5 - 百度Ueditor代码高亮和代码段滚动条冲突是怎么回事?2. javascript - vue 数据更新了。但是dom没有更新,,,,,如图3. docker 17.03 怎么配置 registry mirror ?4. javascript - 读取页面源码,页面中所有的换行都被当成<br/>读取出来 了,,求解应该怎么让它被正确的解析5. javascript - 关于一段 for 循环代码执行顺序的问题6. javascript - 静态页面引公共头尾文件,js怎么写吖?7. docker网络端口映射,没有方便点的操作方法么?8. docker gitlab 如何git clone?9. java - 3个dao的数据根据请求参数选择一个映射到一个url上,怎么写比较好?10. java - 为什么要将Runnable接口的子类对象传递给Thread的构造函数?