Задать вопрос
@tispoint

Почему Scrapy Xpath не парсит некоторые выражения?

Добрый день!
Пытаюсь освоить Scrapy, путем адаптации найденного работоспособного примера под свои нужды.
#! coding: utf-8
__author__ = 'acman'
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor
from scrapy.item import Item, Field
from scrapy.contrib.loader import XPathItemLoader
from scrapy.contrib.loader.processor import TakeFirst
from scrapy.selector import HtmlXPathSelector
#
#
class ScrapyTestItem(Item):
    title = Field()
    imagelink = Field()
    url = Field()
    price = Field()
    field_11 = Field()

class Test03Loader(XPathItemLoader):
    default_output_processor = TakeFirst()    
  
class ScrapyTestSpider(CrawlSpider):
    name = "test03"
    allowed_domains = ["pastelmebel.ru"]
    start_urls = ["http://pastelmebel.ru/shop/bedroom-furniture/bedroom-august/the-cabinet-wall-s-83-sfw1w-august-wenge/"]

    rules = (
        Rule(LinkExtractor(allow=('/bedroom-august/')), 
            callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        hxs = HtmlXPathSelector(response)
        l = Test03Loader(ScrapyTestItem(), hxs)

        l.add_xpath('title', "//h1[last()]/text()")
        l.add_xpath('imagelink', "//img[1]/@src")
        l.add_xpath('price', "//*[@class='itemOtherPricePrice number']/text()")  
        l.add_xpath('field_11', ".//*[@id='tab-sub-about-features']/table/tbody/tr[1]/td[2]/span") 
        l.add_value('url', response.url)

        return l.load_item()


Так вот, в итоговый вывод не попадает поле field_11, остальные (заголовок, цена, путь картинки) парсятся нормально.
Выражение для Xpath брал из FirePath - там все нормально, валидное.

Что еще может быть?
  • Вопрос задан
  • 507 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
а Вы сами, простите, понимаете что там написано? )
.// этот как?
еще и *

постарайтесь научиться писать XPath выражения (подсказка - это когда в них не будет вот такого вот [1] [2]) и работа с XPath станет легкой и понятной
Ответ написан
Комментировать
@dreamhost
удалите /tbody/

тестировать выражения можно в scrapy slell
например
scrapy shell http://targetsite.com
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы