如何用XPath提取包含<未编码为<

时间:2013-11-13 12:55:45

标签: html xpath scrapy html-entities

我想使用Scrapy从html页面中提取一些文本。

其中一个元素包含<字符,该字符未编码为&lt;(页面无效html)。

例如

<div>
  years < 7
</div>

使用'//div/text()'的XPath(在Chrome或Scapy代码中)我只能提取'years'

有没有办法获得全文,即'years < 7'

2 个答案:

答案 0 :(得分:1)

XPath在DOM级别上运行,而不是在如何编码的情况下运行。 XPath没有看到实体是否用于某些事情。这是DOM解析器业务。因此,如果DOM解析器丢弃< 7,因为它无法理解它,那么XPath根本不会看到该部分。

要获得可靠的结果,请在应用XPath之前通过其他方法修复HTML。

答案 1 :(得分:0)

您可以使用其他模块代替基本选择 例如,我使用自己的

from lxml import etree
from lxml.html.clean import clean_html

import html5lib
from lxml.etree import XMLSyntaxError, XPathEvalErro

def parse_user(self, response):        
    m = smarte_html_parser.dive_html_root_level(html=response.body)

这                   一些标题                                年&lt; 7                   

我有多年&lt; 7