如何在使用lxml / scrapy选择器xpath后获得原始的html实体?
我已经尝试了lxml而不是parsel包,同样的问题。
mytext = '<html><body><span>go od</span></body></html>'
sel = parsel.Selector(text=mytext)
sel.xpath('//body').extract()实际输出:
['<body><span>go\xa0od</span></body>']预期输出:
['<body><span>go od</span></body>'] 被转换了,如何保持它的原样?
发布于 2019-11-06 07:00:35
根据文档,目前,.extract()和.getall()方法返回带有 unicode字符的原始html ,如\xa0,即 。更多信息here。
但是,.extract_first()和.get()方法仅返回列表中的第一个字符,并且输出为,不带 unicode字符。(Docs)
print(sel.xpath('//body').get())输出:
<body><span>go od</span></body>但是如果你真的想用 字符代替''或\xa0。然后,一种解决方案是对这些字符进行常规字符串替换。
示例:
body = sel.xpath('//body').extract()
result = [i.replace('\xa0', ' ') for i in body]
print(result)输出:
['<body><span>go od</span></body>']https://stackoverflow.com/questions/58720320
复制相似问题