Scrapy xpath удаляет текст после <символа

Я пытаюсь получить информацию о продукте с этой страницы. Чтобы получить описание (присутствует внизу страницы), я использую xpath

response.xpath('//*[@itemprop="description"]/table//text()').extract()[3].strip()

Это дает мне описание:

u'Color: White, Size:Free Size, With the body: Braided, Buckle: Automatic Deduction, With the body width: section ('

в то время как тот, который присутствует на сайте

Color: White, Size:Free Size, With the body: Braided, Buckle: Automatic Deduction, With the body width: section (<2cm), Belt Length: 93cm
Product Type: Belts, Accessories

Я проверил, что контент на сайте загружается даже после отключения JavaScript. Что мне здесь не хватает?

1 ответ

Решение

Это все еще должно быть обработано без какого-либо взлома, но вы могли бы заставить это работать с

from parsel import Selector
...

s = Selector(text=response.body_as_unicode(), type='xml')
s.xpath('//*[@itemprop="description"]/table//text()').extract()[3].strip()
# gives u'Color: White, Size:Free Size, With the body: Braided, Buckle: Automatic Deduction, With the body width: section (2cm), Belt Length: 93cm'

проблема здесь в том, что parsel (внутренний scrapy парсер) использует lxml.etree.HtmlParser(recover=True, encoding='utf8') который удаляет такие странные символы, чтобы избежать проблем.

Другие вопросы по тегам