抓取的html页面有一个sql错误,我注意到html标签甚至没有关闭,但我的xpath选择器无法检测到标签内没有关闭的任何内容。
如何通过scrapy检测不靠近的标签?
由于
答案 0 :(得分:1)
有很多工具和库试图修复损坏的html / xml内容。但是,由于scrapy已经使用lxml
库进行解析,我们也可以使用它来修复损坏的文档:
from lxml import etree
from scrapy import Selector
def parse(self, response):
# lets pretend we have this unclosed <li> in our response
print(response.body)
#"<ul><li>foo</ul>"
# create an lxml parser with recover parameter
parser = etree.XMLParser(recover=True)
# retrieve xml document
broken_body = etree.tostring(response.selector.root)
clean_doc = etree.fromstring(broken_body, parser=parser)
selector = Selector(root=clean_doc)
selector.xpath("//li/text()").extract_first()
# foo