使用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>']
已转换,如何保持原样?
根据文档,当前,.extract()
和.getall()
方法返回原始html with Unicode字符,例如\xa0
,即
。更多信息here。
但是,.extract_first()
和.get()
方法仅返回列表中的第一个,并且输出为without 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>']