Может ли селектор lxml / scrapy не передавать объекты html
Как получить исходные объекты html после использования xpath селектора lxml / scrapy?
Я уже пробовал 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>']
В
конвертировались, как их оставить как есть?
1 ответ
Согласно документам, в настоящее время .extract()
а также .getall()
методы возвращают необработанный html с символами юникода, такими как\xa0
т.е.
. Больше информации здесь.
Однако, .extract_first()
а также .get()
Метод возврат только первый в списке и выход без юникода символов. (Документы)
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>']