Scrapy检测标签未关闭

时间:2017-07-26 17:36:39

标签: python scrapy scrapy-spider

抓取的html页面有一个sql错误,我注意到html标签甚至没有关闭,但我的xpath选择器无法检测到标签内没有关闭的任何内容。

如何通过scrapy检测不靠近的标签?

由于

1 个答案:

答案 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