2015-11-03 2 views
2

Я пытаюсь получить информацию о продукте с this. Для того, чтобы получить описание (присутствует в нижней части страницы), я использую XPathScrapy 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

Похоже, что он отключен из-за знака '' ', даже BeautifulSoup вырезает текст после' <'... очень странного – heinst

+1

, это ошибка' parsel', я проверю его в репозитории [здесь] (https://github.com/scrapy/parsel/issues/23) – eLRuLL

+1

ответил ли ответ? – eLRuLL

ответ

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'), который удаляет этот вид странных символов избегать проблем.

Смежные вопросы