Мне нужно очистить некоторый текст из сценария на странице и сохранить этот текст в элементе Scrapy, предположительно, в виде строки UTF-8. Однако фактический буквальный текст, который я вычеркиваю, содержит специальные символы, написанные как то, что я считаю гексом UTF. например «-» записывается как «\ x2f». Как я могу очистить символы, представленные как "\ x2f", но сохранить их как "-" в моем элементе Scrapy?
Выдержка из содержимого на очищенной странице:
<script type="text/javascript">
[approx 100 various lines of script, omitted]
"author": "Kurt\x20Vonnegut",
"internetPrice": "799",
"inventoryType": "new",
"title": "Slaughterhouse\x2DFive",
"publishedYear": "1999",
[approx 50 additional various lines of script, removed]
</script>
Мой сценарий написан так:
pattern_title = r'"title": "(.+)"'
title_raw = response.xpath('//script[@type="text/javascript"]').re(pattern_title)
item['title'] = title_raw[0]
Для этого элемента вывод скрапы будет возвращаться:
'author': u'Kurt \ x20Vonnegut ',' title ': u'Slaughterhouse \ x2DFive'
В идеале я бы хотел:
'author': 'Kurt Vonnegut', 'title': 'Slaughterhouse Five'
Вещи, которые я пробовал, без изменений в выводе:
- Изменить последнюю строку на: item ['title'] = title_raw [0] .decode ('utf-8')
- Изменить последнюю строку на: item ['title'] = title_raw [0] .encode ('latin1'). Decode ('utf-8')
Наконец, в случае, если это необходимо явно указать, я не могу контролировать, как эта информация отображается на очищаемом сайте.