我想使用Scrapy从html页面中提取一些文本。
其中一个元素包含<
字符,该字符未编码为<
(页面无效html)。
例如
<div>
years < 7
</div>
使用'//div/text()'
的XPath(在Chrome或Scapy代码中)我只能提取'years'
有没有办法获得全文,即'years < 7'
?
答案 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